@boltic/sdk 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/databases/index.d.ts +72 -0
- package/dist/databases/index.js +1 -1
- package/dist/databases/index.js.map +1 -1
- package/dist/databases/index.mjs +5 -5
- package/dist/databases/index.mjs.map +1 -1
- package/dist/databases/test-client-DfOmma3t.js +2 -0
- package/dist/databases/test-client-DfOmma3t.js.map +1 -0
- package/dist/databases/{test-client-BffJwqJq.mjs → test-client-rQ1AmTo6.mjs} +229 -4
- package/dist/databases/test-client-rQ1AmTo6.mjs.map +1 -0
- package/dist/databases/testing.d.ts +68 -0
- package/dist/databases/testing.js +1 -1
- package/dist/databases/testing.mjs +1 -1
- package/dist/sdk.js +224 -0
- package/dist/sdk.js.map +1 -1
- package/dist/sdk.mjs +224 -0
- package/dist/sdk.mjs.map +1 -1
- package/dist/types/index.d.ts +68 -0
- package/package.json +2 -5
- package/dist/databases/test-client-BI3VkYA6.js +0 -2
- package/dist/databases/test-client-BI3VkYA6.js.map +0 -1
- package/dist/databases/test-client-BffJwqJq.mjs.map +0 -1
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
export declare interface AddIndexRequest {
|
|
2
|
+
field_names: string[];
|
|
3
|
+
method: 'btree' | 'hash' | 'spgist' | 'gin' | 'brin';
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export declare interface AddIndexResponse {
|
|
7
|
+
index_name: string;
|
|
8
|
+
method: string;
|
|
9
|
+
fields: string[];
|
|
10
|
+
field_ids?: string[];
|
|
11
|
+
created_at?: string;
|
|
12
|
+
created_by?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
export declare type AlignmentType = 'left' | 'right' | 'center';
|
|
2
16
|
|
|
3
17
|
declare type AlignmentType_2 = 'left' | 'center' | 'right';
|
|
@@ -87,6 +101,7 @@ export declare class BolticClient {
|
|
|
87
101
|
private columnResource;
|
|
88
102
|
private recordResource;
|
|
89
103
|
private sqlResource;
|
|
104
|
+
private indexResource;
|
|
90
105
|
private currentDatabase;
|
|
91
106
|
private clientOptions;
|
|
92
107
|
constructor(apiKey: string, options?: ClientOptions);
|
|
@@ -119,6 +134,11 @@ export declare class BolticClient {
|
|
|
119
134
|
message?: string | undefined;
|
|
120
135
|
}>>;
|
|
121
136
|
};
|
|
137
|
+
get indexes(): {
|
|
138
|
+
addIndex: (tableName: string, payload: AddIndexRequest) => Promise<BolticErrorResponse | BolticSuccessResponse<AddIndexResponse>>;
|
|
139
|
+
listIndexes: (tableName: string, query: ListIndexesQuery) => Promise<BolticErrorResponse | BolticSuccessResponse<ListIndexesResponse>>;
|
|
140
|
+
deleteIndex: (tableName: string, indexName: string) => Promise<BolticErrorResponse | BolticSuccessResponse<DeleteIndexResponse>>;
|
|
141
|
+
};
|
|
122
142
|
table(name: string): TableBuilder;
|
|
123
143
|
from(tableName: string): {
|
|
124
144
|
columns: () => {
|
|
@@ -147,6 +167,11 @@ export declare class BolticClient {
|
|
|
147
167
|
}>>;
|
|
148
168
|
};
|
|
149
169
|
record: () => RecordBuilder;
|
|
170
|
+
indexes: () => {
|
|
171
|
+
addIndex: (payload: AddIndexRequest) => Promise<BolticErrorResponse | BolticSuccessResponse<AddIndexResponse>>;
|
|
172
|
+
listIndexes: (query: ListIndexesQuery) => Promise<BolticErrorResponse | BolticSuccessResponse<ListIndexesResponse>>;
|
|
173
|
+
deleteIndex: (indexName: string) => Promise<BolticErrorResponse | BolticSuccessResponse<DeleteIndexResponse>>;
|
|
174
|
+
};
|
|
150
175
|
};
|
|
151
176
|
get records(): {
|
|
152
177
|
insert: (tableName: string, data: RecordData) => Promise<BolticErrorResponse | BolticSuccessResponse<RecordWithId>>;
|
|
@@ -581,6 +606,14 @@ declare const DateFormatEnum: Readonly<{
|
|
|
581
606
|
|
|
582
607
|
declare type DecimalType = '00' | '0.0' | '0.00' | '0.000' | '0.0000' | '0.00000' | '0.000000';
|
|
583
608
|
|
|
609
|
+
export declare interface DeleteIndexRequest {
|
|
610
|
+
index_name: string;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
export declare interface DeleteIndexResponse {
|
|
614
|
+
message?: string;
|
|
615
|
+
}
|
|
616
|
+
|
|
584
617
|
export declare interface DeleteOperation {
|
|
585
618
|
delete(id: string): Promise<{
|
|
586
619
|
success: boolean;
|
|
@@ -750,6 +783,20 @@ export declare interface HttpResponse<T = unknown> {
|
|
|
750
783
|
headers: Record<string, string>;
|
|
751
784
|
}
|
|
752
785
|
|
|
786
|
+
declare interface IndexListItem {
|
|
787
|
+
schemaname?: string;
|
|
788
|
+
relname?: string;
|
|
789
|
+
indexrelname: string;
|
|
790
|
+
method?: string;
|
|
791
|
+
idx_scan?: number;
|
|
792
|
+
idx_tup_read?: number;
|
|
793
|
+
idx_tup_fetch?: number;
|
|
794
|
+
field_ids?: string[];
|
|
795
|
+
fields?: string[];
|
|
796
|
+
created_at?: string;
|
|
797
|
+
created_by?: string;
|
|
798
|
+
}
|
|
799
|
+
|
|
753
800
|
declare interface InterceptorManager {
|
|
754
801
|
request: {
|
|
755
802
|
use(interceptor: RequestInterceptor): number;
|
|
@@ -787,6 +834,31 @@ export declare function isListResponse<T>(response: ApiResponse<T>): response is
|
|
|
787
834
|
*/
|
|
788
835
|
export declare function isNetworkError(error: unknown): error is Error;
|
|
789
836
|
|
|
837
|
+
export declare interface ListIndexesQuery {
|
|
838
|
+
page?: {
|
|
839
|
+
page_no: number;
|
|
840
|
+
page_size: number;
|
|
841
|
+
};
|
|
842
|
+
filters?: Array<{
|
|
843
|
+
field: string;
|
|
844
|
+
operator: string;
|
|
845
|
+
values: unknown[];
|
|
846
|
+
}>;
|
|
847
|
+
sort?: Array<{
|
|
848
|
+
field: string;
|
|
849
|
+
direction: 'asc' | 'desc';
|
|
850
|
+
}>;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
export declare interface ListIndexesResponse {
|
|
854
|
+
items: IndexListItem[];
|
|
855
|
+
page?: {
|
|
856
|
+
page_no: number;
|
|
857
|
+
page_size: number;
|
|
858
|
+
total?: number;
|
|
859
|
+
};
|
|
860
|
+
}
|
|
861
|
+
|
|
790
862
|
/**
|
|
791
863
|
* Convert API filters back to SDK where clause
|
|
792
864
|
*/
|
package/dist/databases/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./test-client-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./test-client-DfOmma3t.js");class i{constructor(e){this.queryOptions={},this.updateData={},this.tableName=e.tableName,this.columnResource=e.columnResource}where(e){return this.queryOptions.where={...this.queryOptions.where,...e},this}orderBy(e,i="asc"){return this.queryOptions.sort||(this.queryOptions.sort=[]),this.queryOptions.sort.push({field:e,order:i}),this}limit(e){return this.queryOptions.limit=e,this}offset(e){return this.queryOptions.offset=e,this}select(e){return this.queryOptions.fields=e,this}set(e){return this.updateData={...this.updateData,...e},this}async findAll(){return this.columnResource.findAll(this.tableName,this.queryOptions)}async get(){var e;return(null==(e=this.queryOptions.where)?void 0:e.name)?this.columnResource.get(this.tableName,this.queryOptions.where.name):{error:{code:"MISSING_COLUMN_NAME",message:"Column name is required for get operation"}}}async update(){var e;return(null==(e=this.queryOptions.where)?void 0:e.name)?this.columnResource.update(this.tableName,this.queryOptions.where.name,this.updateData):{error:{code:"MISSING_COLUMN_NAME",message:"Column name is required for update operation"}}}async delete(){var e;return(null==(e=this.queryOptions.where)?void 0:e.name)?this.columnResource.delete(this.tableName,this.queryOptions.where.name):{error:{code:"MISSING_COLUMN_NAME",message:"Column name is required for delete operation"}}}getQueryOptions(){return{...this.queryOptions}}getUpdateData(){return{...this.updateData}}}exports.ApiError=e.ApiError,exports.BolticClient=e.BolticClient,exports.ENV_CONFIGS=e.ENV_CONFIGS,exports.FILTER_OPERATORS=e.FILTER_OPERATORS,exports.FilterBuilder=e.FilterBuilder,exports.REGION_CONFIGS=e.REGION_CONFIGS,exports.SqlResource=e.SqlResource,exports.ValidationError=e.ValidationError,exports.buildApiFilters=e.buildApiFilters,exports.createErrorResponse=e.createErrorResponse,exports.createErrorWithContext=e.createErrorWithContext,exports.createFilter=e.createFilter,exports.createMockResponse=e.createMockResponse,exports.createRecordBuilder=e.createRecordBuilder,exports.createTableBuilder=e.createTableBuilder,exports.createTestClient=e.createTestClient,exports.formatError=e.formatError,exports.getHttpStatusCode=e.getHttpStatusCode,exports.isErrorResponse=e.isErrorResponse,exports.isListResponse=e.isListResponse,exports.isNetworkError=e.isNetworkError,exports.mapFiltersToWhere=e.mapFiltersToWhere,exports.mapWhereToFilters=e.mapWhereToFilters,exports.normalizeFilters=e.normalizeFilters,exports.ColumnHelpers=class{static fieldToUpdateRequest(e){return{name:e.name,type:e.type,description:e.description,is_nullable:e.is_nullable,is_unique:e.is_unique,is_indexed:e.is_indexed,is_visible:e.is_visible,is_primary_key:e.is_primary_key,is_readonly:e.is_readonly,field_order:e.field_order,default_value:e.default_value,alignment:e.alignment,decimals:e.decimals,currency_format:e.currency_format,selectable_items:e.selectable_items,multiple_selections:e.multiple_selections,phone_format:e.phone_format,date_format:e.date_format,time_format:e.time_format,timezone:e.timezone,vector_dimension:e.vector_dimension}}static applyDefaultValues(e){if(!e.name||!e.type)throw new Error("Column name and type are required");return{name:e.name,type:e.type,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,is_visible:!0,is_readonly:!1,field_order:1,alignment:"left",multiple_selections:!1,...e}}static createColumnDefinition(e,i,r={}){return this.applyDefaultValues({name:e,type:i,...r})}static getColumnTypeDisplayName(e){return{text:"Text","long-text":"Long Text",number:"Number",currency:"Currency",checkbox:"Checkbox",dropdown:"Dropdown",email:"Email","phone-number":"Phone Number",link:"Link",json:"JSON","date-time":"Date & Time",vector:"Vector",halfvec:"Half Vector",sparsevec:"Sparse Vector"}[e]||e}},exports.SchemaHelpers=class{static textField(e,i={}){return{name:e,type:"text",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,...i}}static numberField(e,i={}){return{name:e,type:"number",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,decimals:"0.00",...i}}static currencyField(e,i="USD",r={}){return{name:e,type:"currency",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,decimals:"0.00",currency_format:i,...r}}static dropdownField(e,i,r={}){return{name:e,type:"dropdown",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,selection_source:"provide-static-list",selectable_items:i,multiple_selections:!1,...r}}static vectorField(e,i,r={}){return{name:e,type:"vector",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,vector_dimension:i,...r}}static jsonField(e,i={}){return{name:e,type:"json",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,...i}}static dateTimeField(e,i={}){return{name:e,type:"date-time",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,date_format:"YYYY-MM-DD",time_format:"HH:mm:ss",...i}}static emailField(e,i={}){return{name:e,type:"email",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,...i}}static longTextField(e,i={}){return{name:e,type:"long-text",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,...i}}static linkField(e,i={}){return{name:e,type:"link",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,...i}}static phoneNumberField(e,i="international",r={}){return{name:e,type:"phone-number",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,phone_format:i,...r}}static checkboxField(e,i={}){return{name:e,type:"checkbox",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,default_value:!1,...i}}static halfVectorField(e,i,r={}){return{name:e,type:"halfvec",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,vector_dimension:i,...r}}static sparseVectorField(e,i,r={}){return{name:e,type:"sparsevec",is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:1,vector_dimension:i,...r}}static createBasicSchema(e){return e.map((e,i)=>({name:e.name,type:e.type,is_nullable:!0,is_primary_key:!1,is_unique:!1,is_visible:!0,is_readonly:!1,is_indexed:!1,field_order:i+1}))}},exports.VERSION="1.0.0",exports.createClient=function(i,r={}){return new e.BolticClient(i,r)},exports.createColumnBuilder=function(e){return new i(e)};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/client/resources/column-builder.ts","../src/utils/column/helpers.ts","../src/utils/table/schema-helpers.ts","../src/index.ts","../src/client/index.ts"],"sourcesContent":["import {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from '../../types/api/column';\nimport {\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n} from '../../types/common/responses';\nimport { ColumnResource } from './column';\n\nexport interface ColumnBuilderOptions {\n tableName: string;\n columnResource: ColumnResource;\n}\n\n/**\n * Column Builder - provides a fluent interface for building column queries and operations\n */\nexport class ColumnBuilder {\n private tableName: string;\n private columnResource: ColumnResource;\n private queryOptions: ColumnQueryOptions = {};\n private updateData: ColumnUpdateRequest = {};\n\n constructor(options: ColumnBuilderOptions) {\n this.tableName = options.tableName;\n this.columnResource = options.columnResource;\n }\n\n /**\n * Add filter conditions\n */\n where(conditions: Partial<ColumnQueryOptions['where']>): ColumnBuilder {\n this.queryOptions.where = { ...this.queryOptions.where, ...conditions };\n return this;\n }\n\n /**\n * Set sorting\n */\n orderBy(\n field: keyof ColumnDetails,\n direction: 'asc' | 'desc' = 'asc'\n ): ColumnBuilder {\n if (!this.queryOptions.sort) {\n this.queryOptions.sort = [];\n }\n this.queryOptions.sort.push({ field, order: direction });\n return this;\n }\n\n /**\n * Set limit\n */\n limit(count: number): ColumnBuilder {\n this.queryOptions.limit = count;\n return this;\n }\n\n /**\n * Set offset\n */\n offset(count: number): ColumnBuilder {\n this.queryOptions.offset = count;\n return this;\n }\n\n /**\n * Set fields to select\n */\n select(fields: Array<keyof ColumnDetails>): ColumnBuilder {\n this.queryOptions.fields = fields;\n return this;\n }\n\n /**\n * Set data for update operations\n */\n set(data: ColumnUpdateRequest): ColumnBuilder {\n this.updateData = { ...this.updateData, ...data };\n return this;\n }\n\n /**\n * Execute findAll operation\n */\n async findAll(): Promise<\n BolticListResponse<ColumnDetails> | BolticErrorResponse\n > {\n return this.columnResource.findAll(this.tableName, this.queryOptions);\n }\n\n /**\n * Execute get operation (was findOne) - requires column name\n */\n async get(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for get operation',\n },\n };\n }\n\n return this.columnResource.get(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Execute update operation - requires column name\n */\n async update(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for update operation',\n },\n };\n }\n\n return this.columnResource.update(\n this.tableName,\n this.queryOptions.where.name as string,\n this.updateData\n );\n }\n\n /**\n * Execute delete operation - requires column name\n */\n async delete(): Promise<\n | BolticSuccessResponse<{ success: boolean; message?: string }>\n | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for delete operation',\n },\n };\n }\n\n return this.columnResource.delete(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Get the built query options (for debugging)\n */\n getQueryOptions(): ColumnQueryOptions {\n return { ...this.queryOptions };\n }\n\n /**\n * Get the update data (for debugging)\n */\n getUpdateData(): ColumnUpdateRequest {\n return { ...this.updateData };\n }\n}\n\n/**\n * Create a new column builder\n */\nexport function createColumnBuilder(\n options: ColumnBuilderOptions\n): ColumnBuilder {\n return new ColumnBuilder(options);\n}\n","import {\n ColumnUpdateRequest,\n DateFormatEnum,\n DecimalType,\n PhoneFormatType,\n TimeFormatEnum,\n} from '../../types/api/column';\nimport { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class ColumnHelpers {\n /**\n * Convert FieldDefinition to ColumnUpdateRequest\n */\n static fieldToUpdateRequest(field: FieldDefinition): ColumnUpdateRequest {\n return {\n name: field.name,\n type: field.type,\n description: field.description,\n is_nullable: field.is_nullable,\n is_unique: field.is_unique,\n is_indexed: field.is_indexed,\n is_visible: field.is_visible,\n is_primary_key: field.is_primary_key,\n is_readonly: field.is_readonly,\n field_order: field.field_order,\n default_value: field.default_value,\n alignment: field.alignment,\n decimals: field.decimals as DecimalType,\n currency_format: field.currency_format,\n selectable_items: field.selectable_items,\n multiple_selections: field.multiple_selections,\n phone_format: field.phone_format as PhoneFormatType,\n date_format: field.date_format as keyof typeof DateFormatEnum,\n time_format: field.time_format as keyof typeof TimeFormatEnum,\n timezone: field.timezone,\n vector_dimension: field.vector_dimension,\n };\n }\n\n /**\n * Apply default values to column definition\n */\n static applyDefaultValues(column: Partial<FieldDefinition>): FieldDefinition {\n if (!column.name || !column.type) {\n throw new Error('Column name and type are required');\n }\n\n return {\n name: column.name,\n type: column.type,\n is_nullable: true,\n is_unique: false,\n is_indexed: false,\n is_primary_key: false,\n is_visible: true,\n is_readonly: false,\n field_order: 1,\n alignment: 'left',\n multiple_selections: false,\n ...column,\n };\n }\n\n /**\n * Create a column definition with proper defaults\n */\n static createColumnDefinition(\n name: string,\n type: FieldType,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return this.applyDefaultValues({\n name,\n type,\n ...options,\n });\n }\n\n /**\n * Get column type display name\n */\n static getColumnTypeDisplayName(type: FieldType): string {\n const typeNames: Record<FieldType, string> = {\n text: 'Text',\n 'long-text': 'Long Text',\n number: 'Number',\n currency: 'Currency',\n checkbox: 'Checkbox',\n dropdown: 'Dropdown',\n email: 'Email',\n 'phone-number': 'Phone Number',\n link: 'Link',\n json: 'JSON',\n 'date-time': 'Date & Time',\n vector: 'Vector',\n halfvec: 'Half Vector',\n sparsevec: 'Sparse Vector',\n };\n\n return typeNames[type] || type;\n }\n}\n","import { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class SchemaHelpers {\n /**\n * Create a text field definition\n */\n static textField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a number field definition\n */\n static numberField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n ...options,\n };\n }\n\n /**\n * Create a currency field definition\n */\n static currencyField(\n name: string,\n currency: string = 'USD',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'currency',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n currency_format: currency,\n ...options,\n };\n }\n\n /**\n * Create a dropdown field definition\n */\n static dropdownField(\n name: string,\n items: string[],\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'dropdown',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n selection_source: 'provide-static-list',\n selectable_items: items,\n multiple_selections: false,\n ...options,\n };\n }\n\n /**\n * Create a vector field definition\n */\n static vectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'vector',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a JSON field definition\n */\n static jsonField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'json',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a date-time field definition\n */\n static dateTimeField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'date-time',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n date_format: 'YYYY-MM-DD',\n time_format: 'HH:mm:ss',\n ...options,\n };\n }\n\n /**\n * Create an email field definition\n */\n static emailField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'email',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a long-text field definition\n */\n static longTextField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'long-text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a link field definition\n */\n static linkField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'link',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a phone number field definition\n */\n static phoneNumberField(\n name: string,\n format: string = 'international',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'phone-number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n phone_format: format,\n ...options,\n };\n }\n\n /**\n * Create a checkbox field definition\n */\n static checkboxField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'checkbox',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n default_value: false,\n ...options,\n };\n }\n\n /**\n * Create a half-vector field definition\n */\n static halfVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'halfvec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a sparse vector field definition\n */\n static sparseVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'sparsevec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a basic schema from field definitions\n */\n static createBasicSchema(\n fields: Array<{ name: string; type: FieldType }>\n ): FieldDefinition[] {\n return fields.map((field, index) => ({\n name: field.name,\n type: field.type,\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: index + 1,\n }));\n }\n}\n","// Main SDK exports\nexport { BolticClient, createClient } from './client';\nexport type { ClientOptions } from './client';\n\n// Type exports for external use\nexport type {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from './types/api/column';\nexport type {\n RecordData,\n RecordDeleteOptions,\n RecordQueryOptions,\n RecordWithId,\n} from './types/api/record';\nexport type {\n FieldDefinition,\n TableCreateRequest,\n TableRecord,\n TableUpdateRequest,\n} from './types/api/table';\n\n// Response types and helpers - Essential for type checking\nexport { isErrorResponse, isListResponse } from './types/common/responses';\nexport type {\n ApiResponse,\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n BulkResponse,\n ErrorResponse,\n QueryOptions,\n SuccessResponse,\n} from './types/common/responses';\n\n// Pagination and operation types\nexport type { PaginationInfo } from './types/common/operations';\n\n// Utility classes for schema and column management\nexport { ColumnHelpers } from './utils/column/helpers';\nexport { SchemaHelpers } from './utils/table/schema-helpers';\n\n// Filter utilities and constants\nexport {\n buildApiFilters,\n createFilter,\n FILTER_OPERATORS,\n FilterBuilder,\n mapFiltersToWhere,\n mapWhereToFilters,\n normalizeFilters,\n} from './utils/filters/filter-mapper';\nexport type { ApiFilter } from './utils/filters/filter-mapper';\n\n// Builder creation functions\nexport { createColumnBuilder } from './client/resources/column-builder';\nexport { createRecordBuilder } from './client/resources/record-builder';\nexport { createTableBuilder } from './client/resources/table-builder';\n\n// Error handling utilities\nexport {\n ApiError,\n createErrorWithContext,\n formatError,\n getHttpStatusCode,\n isNetworkError,\n ValidationError,\n} from './errors/utils';\nexport type { ValidationFailure } from './errors/utils';\n\n// HTTP adapter types for advanced users\nexport type {\n HttpAdapter,\n HttpRequestConfig,\n HttpResponse,\n} from './utils/http/adapter';\n\n// Testing utilities for SDK users\nexport {\n createErrorResponse,\n createMockResponse,\n createTestClient,\n} from './testing/test-client';\nexport type { MockClientOptions } from './testing/test-client';\n\n// Export all errors\nexport * from './errors';\n\n// Export all types\nexport * from './types';\n\n// SQL exports\nexport * from './client/resources/sql';\n\n// Version information\nexport const VERSION = '1.0.0';\n","import { BolticClient, ClientOptions } from './boltic-client';\n\nexport function createClient(\n apiKey: string,\n options: ClientOptions = {}\n): BolticClient {\n return new BolticClient(apiKey, options);\n}\n\nexport type { Region } from '../types/config/environment';\nexport * from './core/auth-manager';\nexport * from './core/base-client';\nexport * from './core/base-resource';\nexport * from './core/config';\nexport * from './resources/record';\nexport * from './resources/record-builder';\nexport * from './resources/table';\nexport {\n createTableBuilder,\n TableBuilder,\n type TableBuilderOptions,\n} from './resources/table-builder';\nexport { BolticClient };\nexport type { ClientOptions };\n"],"names":["ColumnBuilder","constructor","options","this","queryOptions","updateData","tableName","columnResource","where","conditions","orderBy","field","direction","sort","push","order","limit","count","offset","select","fields","set","data","findAll","get","_a","name","error","code","message","update","delete","getQueryOptions","getUpdateData","fieldToUpdateRequest","type","description","is_nullable","is_unique","is_indexed","is_visible","is_primary_key","is_readonly","field_order","default_value","alignment","decimals","currency_format","selectable_items","multiple_selections","phone_format","date_format","time_format","timezone","vector_dimension","applyDefaultValues","column","Error","createColumnDefinition","getColumnTypeDisplayName","text","number","currency","checkbox","dropdown","email","link","json","vector","halfvec","sparsevec","textField","numberField","currencyField","dropdownField","items","selection_source","vectorField","dimension","jsonField","dateTimeField","emailField","longTextField","linkField","phoneNumberField","format","checkboxField","halfVectorField","sparseVectorField","createBasicSchema","map","index","apiKey","BolticClient"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/client/resources/column-builder.ts","../src/utils/column/helpers.ts","../src/utils/table/schema-helpers.ts","../src/index.ts","../src/client/index.ts"],"sourcesContent":["import {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from '../../types/api/column';\nimport {\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n} from '../../types/common/responses';\nimport { ColumnResource } from './column';\n\nexport interface ColumnBuilderOptions {\n tableName: string;\n columnResource: ColumnResource;\n}\n\n/**\n * Column Builder - provides a fluent interface for building column queries and operations\n */\nexport class ColumnBuilder {\n private tableName: string;\n private columnResource: ColumnResource;\n private queryOptions: ColumnQueryOptions = {};\n private updateData: ColumnUpdateRequest = {};\n\n constructor(options: ColumnBuilderOptions) {\n this.tableName = options.tableName;\n this.columnResource = options.columnResource;\n }\n\n /**\n * Add filter conditions\n */\n where(conditions: Partial<ColumnQueryOptions['where']>): ColumnBuilder {\n this.queryOptions.where = { ...this.queryOptions.where, ...conditions };\n return this;\n }\n\n /**\n * Set sorting\n */\n orderBy(\n field: keyof ColumnDetails,\n direction: 'asc' | 'desc' = 'asc'\n ): ColumnBuilder {\n if (!this.queryOptions.sort) {\n this.queryOptions.sort = [];\n }\n this.queryOptions.sort.push({ field, order: direction });\n return this;\n }\n\n /**\n * Set limit\n */\n limit(count: number): ColumnBuilder {\n this.queryOptions.limit = count;\n return this;\n }\n\n /**\n * Set offset\n */\n offset(count: number): ColumnBuilder {\n this.queryOptions.offset = count;\n return this;\n }\n\n /**\n * Set fields to select\n */\n select(fields: Array<keyof ColumnDetails>): ColumnBuilder {\n this.queryOptions.fields = fields;\n return this;\n }\n\n /**\n * Set data for update operations\n */\n set(data: ColumnUpdateRequest): ColumnBuilder {\n this.updateData = { ...this.updateData, ...data };\n return this;\n }\n\n /**\n * Execute findAll operation\n */\n async findAll(): Promise<\n BolticListResponse<ColumnDetails> | BolticErrorResponse\n > {\n return this.columnResource.findAll(this.tableName, this.queryOptions);\n }\n\n /**\n * Execute get operation (was findOne) - requires column name\n */\n async get(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for get operation',\n },\n };\n }\n\n return this.columnResource.get(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Execute update operation - requires column name\n */\n async update(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for update operation',\n },\n };\n }\n\n return this.columnResource.update(\n this.tableName,\n this.queryOptions.where.name as string,\n this.updateData\n );\n }\n\n /**\n * Execute delete operation - requires column name\n */\n async delete(): Promise<\n | BolticSuccessResponse<{ success: boolean; message?: string }>\n | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for delete operation',\n },\n };\n }\n\n return this.columnResource.delete(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Get the built query options (for debugging)\n */\n getQueryOptions(): ColumnQueryOptions {\n return { ...this.queryOptions };\n }\n\n /**\n * Get the update data (for debugging)\n */\n getUpdateData(): ColumnUpdateRequest {\n return { ...this.updateData };\n }\n}\n\n/**\n * Create a new column builder\n */\nexport function createColumnBuilder(\n options: ColumnBuilderOptions\n): ColumnBuilder {\n return new ColumnBuilder(options);\n}\n","import {\n ColumnUpdateRequest,\n DateFormatEnum,\n DecimalType,\n PhoneFormatType,\n TimeFormatEnum,\n} from '../../types/api/column';\nimport { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class ColumnHelpers {\n /**\n * Convert FieldDefinition to ColumnUpdateRequest\n */\n static fieldToUpdateRequest(field: FieldDefinition): ColumnUpdateRequest {\n return {\n name: field.name,\n type: field.type,\n description: field.description,\n is_nullable: field.is_nullable,\n is_unique: field.is_unique,\n is_indexed: field.is_indexed,\n is_visible: field.is_visible,\n is_primary_key: field.is_primary_key,\n is_readonly: field.is_readonly,\n field_order: field.field_order,\n default_value: field.default_value,\n alignment: field.alignment,\n decimals: field.decimals as DecimalType,\n currency_format: field.currency_format,\n selectable_items: field.selectable_items,\n multiple_selections: field.multiple_selections,\n phone_format: field.phone_format as PhoneFormatType,\n date_format: field.date_format as keyof typeof DateFormatEnum,\n time_format: field.time_format as keyof typeof TimeFormatEnum,\n timezone: field.timezone,\n vector_dimension: field.vector_dimension,\n };\n }\n\n /**\n * Apply default values to column definition\n */\n static applyDefaultValues(column: Partial<FieldDefinition>): FieldDefinition {\n if (!column.name || !column.type) {\n throw new Error('Column name and type are required');\n }\n\n return {\n name: column.name,\n type: column.type,\n is_nullable: true,\n is_unique: false,\n is_indexed: false,\n is_primary_key: false,\n is_visible: true,\n is_readonly: false,\n field_order: 1,\n alignment: 'left',\n multiple_selections: false,\n ...column,\n };\n }\n\n /**\n * Create a column definition with proper defaults\n */\n static createColumnDefinition(\n name: string,\n type: FieldType,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return this.applyDefaultValues({\n name,\n type,\n ...options,\n });\n }\n\n /**\n * Get column type display name\n */\n static getColumnTypeDisplayName(type: FieldType): string {\n const typeNames: Record<FieldType, string> = {\n text: 'Text',\n 'long-text': 'Long Text',\n number: 'Number',\n currency: 'Currency',\n checkbox: 'Checkbox',\n dropdown: 'Dropdown',\n email: 'Email',\n 'phone-number': 'Phone Number',\n link: 'Link',\n json: 'JSON',\n 'date-time': 'Date & Time',\n vector: 'Vector',\n halfvec: 'Half Vector',\n sparsevec: 'Sparse Vector',\n };\n\n return typeNames[type] || type;\n }\n}\n","import { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class SchemaHelpers {\n /**\n * Create a text field definition\n */\n static textField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a number field definition\n */\n static numberField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n ...options,\n };\n }\n\n /**\n * Create a currency field definition\n */\n static currencyField(\n name: string,\n currency: string = 'USD',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'currency',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n currency_format: currency,\n ...options,\n };\n }\n\n /**\n * Create a dropdown field definition\n */\n static dropdownField(\n name: string,\n items: string[],\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'dropdown',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n selection_source: 'provide-static-list',\n selectable_items: items,\n multiple_selections: false,\n ...options,\n };\n }\n\n /**\n * Create a vector field definition\n */\n static vectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'vector',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a JSON field definition\n */\n static jsonField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'json',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a date-time field definition\n */\n static dateTimeField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'date-time',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n date_format: 'YYYY-MM-DD',\n time_format: 'HH:mm:ss',\n ...options,\n };\n }\n\n /**\n * Create an email field definition\n */\n static emailField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'email',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a long-text field definition\n */\n static longTextField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'long-text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a link field definition\n */\n static linkField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'link',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a phone number field definition\n */\n static phoneNumberField(\n name: string,\n format: string = 'international',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'phone-number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n phone_format: format,\n ...options,\n };\n }\n\n /**\n * Create a checkbox field definition\n */\n static checkboxField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'checkbox',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n default_value: false,\n ...options,\n };\n }\n\n /**\n * Create a half-vector field definition\n */\n static halfVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'halfvec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a sparse vector field definition\n */\n static sparseVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'sparsevec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a basic schema from field definitions\n */\n static createBasicSchema(\n fields: Array<{ name: string; type: FieldType }>\n ): FieldDefinition[] {\n return fields.map((field, index) => ({\n name: field.name,\n type: field.type,\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: index + 1,\n }));\n }\n}\n","// Main SDK exports\nexport { BolticClient, createClient } from './client';\nexport type { ClientOptions } from './client';\n\n// Type exports for external use\nexport type {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from './types/api/column';\nexport type {\n AddIndexRequest,\n AddIndexResponse,\n DeleteIndexRequest,\n DeleteIndexResponse,\n ListIndexesQuery,\n ListIndexesResponse,\n} from './types/api/index';\nexport type {\n RecordData,\n RecordDeleteOptions,\n RecordQueryOptions,\n RecordWithId,\n} from './types/api/record';\nexport type {\n FieldDefinition,\n TableCreateRequest,\n TableRecord,\n TableUpdateRequest,\n} from './types/api/table';\n\n// Response types and helpers - Essential for type checking\nexport { isErrorResponse, isListResponse } from './types/common/responses';\nexport type {\n ApiResponse,\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n BulkResponse,\n ErrorResponse,\n QueryOptions,\n SuccessResponse,\n} from './types/common/responses';\n\n// Pagination and operation types\nexport type { PaginationInfo } from './types/common/operations';\n\n// Utility classes for schema and column management\nexport { ColumnHelpers } from './utils/column/helpers';\nexport { SchemaHelpers } from './utils/table/schema-helpers';\n\n// Filter utilities and constants\nexport {\n FILTER_OPERATORS,\n FilterBuilder,\n buildApiFilters,\n createFilter,\n mapFiltersToWhere,\n mapWhereToFilters,\n normalizeFilters,\n} from './utils/filters/filter-mapper';\nexport type { ApiFilter } from './utils/filters/filter-mapper';\n\n// Builder creation functions\nexport { createColumnBuilder } from './client/resources/column-builder';\nexport { createRecordBuilder } from './client/resources/record-builder';\nexport { createTableBuilder } from './client/resources/table-builder';\n\n// Error handling utilities\nexport {\n ApiError,\n ValidationError,\n createErrorWithContext,\n formatError,\n getHttpStatusCode,\n isNetworkError,\n} from './errors/utils';\nexport type { ValidationFailure } from './errors/utils';\n\n// HTTP adapter types for advanced users\nexport type {\n HttpAdapter,\n HttpRequestConfig,\n HttpResponse,\n} from './utils/http/adapter';\n\n// Testing utilities for SDK users\nexport {\n createErrorResponse,\n createMockResponse,\n createTestClient,\n} from './testing/test-client';\nexport type { MockClientOptions } from './testing/test-client';\n\n// Export all errors\nexport * from './errors';\n\n// Export all types\nexport * from './types';\n\n// SQL exports\nexport * from './client/resources/sql';\n\n// Version information\nexport const VERSION = '1.0.0';\n","import { BolticClient, ClientOptions } from './boltic-client';\n\nexport function createClient(\n apiKey: string,\n options: ClientOptions = {}\n): BolticClient {\n return new BolticClient(apiKey, options);\n}\n\nexport type { Region } from '../types/config/environment';\nexport * from './core/auth-manager';\nexport * from './core/base-client';\nexport * from './core/base-resource';\nexport * from './core/config';\nexport * from './resources/record';\nexport * from './resources/record-builder';\nexport * from './resources/table';\nexport {\n createTableBuilder,\n TableBuilder,\n type TableBuilderOptions,\n} from './resources/table-builder';\nexport { BolticClient };\nexport type { ClientOptions };\n"],"names":["ColumnBuilder","constructor","options","this","queryOptions","updateData","tableName","columnResource","where","conditions","orderBy","field","direction","sort","push","order","limit","count","offset","select","fields","set","data","findAll","get","_a","name","error","code","message","update","delete","getQueryOptions","getUpdateData","fieldToUpdateRequest","type","description","is_nullable","is_unique","is_indexed","is_visible","is_primary_key","is_readonly","field_order","default_value","alignment","decimals","currency_format","selectable_items","multiple_selections","phone_format","date_format","time_format","timezone","vector_dimension","applyDefaultValues","column","Error","createColumnDefinition","getColumnTypeDisplayName","text","number","currency","checkbox","dropdown","email","link","json","vector","halfvec","sparsevec","textField","numberField","currencyField","dropdownField","items","selection_source","vectorField","dimension","jsonField","dateTimeField","emailField","longTextField","linkField","phoneNumberField","format","checkboxField","halfVectorField","sparseVectorField","createBasicSchema","map","index","apiKey","BolticClient"],"mappings":"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"}
|
package/dist/databases/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as BolticClient } from "./test-client-
|
|
2
|
-
import { A, E, F,
|
|
1
|
+
import { B as BolticClient } from "./test-client-rQ1AmTo6.mjs";
|
|
2
|
+
import { A, E, F, b, R, S, V, c, o, h, d, p, f, g, q, j, k, i, a, l, m, e, n } from "./test-client-rQ1AmTo6.mjs";
|
|
3
3
|
function createClient(apiKey, options = {}) {
|
|
4
4
|
return new BolticClient(apiKey, options);
|
|
5
5
|
}
|
|
@@ -492,18 +492,18 @@ export {
|
|
|
492
492
|
ColumnHelpers,
|
|
493
493
|
E as ENV_CONFIGS,
|
|
494
494
|
F as FILTER_OPERATORS,
|
|
495
|
-
|
|
495
|
+
b as FilterBuilder,
|
|
496
496
|
R as REGION_CONFIGS,
|
|
497
497
|
SchemaHelpers,
|
|
498
498
|
S as SqlResource,
|
|
499
499
|
VERSION,
|
|
500
500
|
V as ValidationError,
|
|
501
|
-
|
|
501
|
+
c as buildApiFilters,
|
|
502
502
|
createClient,
|
|
503
503
|
createColumnBuilder,
|
|
504
504
|
o as createErrorResponse,
|
|
505
505
|
h as createErrorWithContext,
|
|
506
|
-
|
|
506
|
+
d as createFilter,
|
|
507
507
|
p as createMockResponse,
|
|
508
508
|
f as createRecordBuilder,
|
|
509
509
|
g as createTableBuilder,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/client/index.ts","../src/utils/column/helpers.ts","../src/utils/table/schema-helpers.ts","../src/client/resources/column-builder.ts","../src/index.ts"],"sourcesContent":["import { BolticClient, ClientOptions } from './boltic-client';\n\nexport function createClient(\n apiKey: string,\n options: ClientOptions = {}\n): BolticClient {\n return new BolticClient(apiKey, options);\n}\n\nexport type { Region } from '../types/config/environment';\nexport * from './core/auth-manager';\nexport * from './core/base-client';\nexport * from './core/base-resource';\nexport * from './core/config';\nexport * from './resources/record';\nexport * from './resources/record-builder';\nexport * from './resources/table';\nexport {\n createTableBuilder,\n TableBuilder,\n type TableBuilderOptions,\n} from './resources/table-builder';\nexport { BolticClient };\nexport type { ClientOptions };\n","import {\n ColumnUpdateRequest,\n DateFormatEnum,\n DecimalType,\n PhoneFormatType,\n TimeFormatEnum,\n} from '../../types/api/column';\nimport { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class ColumnHelpers {\n /**\n * Convert FieldDefinition to ColumnUpdateRequest\n */\n static fieldToUpdateRequest(field: FieldDefinition): ColumnUpdateRequest {\n return {\n name: field.name,\n type: field.type,\n description: field.description,\n is_nullable: field.is_nullable,\n is_unique: field.is_unique,\n is_indexed: field.is_indexed,\n is_visible: field.is_visible,\n is_primary_key: field.is_primary_key,\n is_readonly: field.is_readonly,\n field_order: field.field_order,\n default_value: field.default_value,\n alignment: field.alignment,\n decimals: field.decimals as DecimalType,\n currency_format: field.currency_format,\n selectable_items: field.selectable_items,\n multiple_selections: field.multiple_selections,\n phone_format: field.phone_format as PhoneFormatType,\n date_format: field.date_format as keyof typeof DateFormatEnum,\n time_format: field.time_format as keyof typeof TimeFormatEnum,\n timezone: field.timezone,\n vector_dimension: field.vector_dimension,\n };\n }\n\n /**\n * Apply default values to column definition\n */\n static applyDefaultValues(column: Partial<FieldDefinition>): FieldDefinition {\n if (!column.name || !column.type) {\n throw new Error('Column name and type are required');\n }\n\n return {\n name: column.name,\n type: column.type,\n is_nullable: true,\n is_unique: false,\n is_indexed: false,\n is_primary_key: false,\n is_visible: true,\n is_readonly: false,\n field_order: 1,\n alignment: 'left',\n multiple_selections: false,\n ...column,\n };\n }\n\n /**\n * Create a column definition with proper defaults\n */\n static createColumnDefinition(\n name: string,\n type: FieldType,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return this.applyDefaultValues({\n name,\n type,\n ...options,\n });\n }\n\n /**\n * Get column type display name\n */\n static getColumnTypeDisplayName(type: FieldType): string {\n const typeNames: Record<FieldType, string> = {\n text: 'Text',\n 'long-text': 'Long Text',\n number: 'Number',\n currency: 'Currency',\n checkbox: 'Checkbox',\n dropdown: 'Dropdown',\n email: 'Email',\n 'phone-number': 'Phone Number',\n link: 'Link',\n json: 'JSON',\n 'date-time': 'Date & Time',\n vector: 'Vector',\n halfvec: 'Half Vector',\n sparsevec: 'Sparse Vector',\n };\n\n return typeNames[type] || type;\n }\n}\n","import { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class SchemaHelpers {\n /**\n * Create a text field definition\n */\n static textField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a number field definition\n */\n static numberField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n ...options,\n };\n }\n\n /**\n * Create a currency field definition\n */\n static currencyField(\n name: string,\n currency: string = 'USD',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'currency',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n currency_format: currency,\n ...options,\n };\n }\n\n /**\n * Create a dropdown field definition\n */\n static dropdownField(\n name: string,\n items: string[],\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'dropdown',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n selection_source: 'provide-static-list',\n selectable_items: items,\n multiple_selections: false,\n ...options,\n };\n }\n\n /**\n * Create a vector field definition\n */\n static vectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'vector',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a JSON field definition\n */\n static jsonField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'json',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a date-time field definition\n */\n static dateTimeField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'date-time',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n date_format: 'YYYY-MM-DD',\n time_format: 'HH:mm:ss',\n ...options,\n };\n }\n\n /**\n * Create an email field definition\n */\n static emailField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'email',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a long-text field definition\n */\n static longTextField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'long-text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a link field definition\n */\n static linkField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'link',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a phone number field definition\n */\n static phoneNumberField(\n name: string,\n format: string = 'international',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'phone-number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n phone_format: format,\n ...options,\n };\n }\n\n /**\n * Create a checkbox field definition\n */\n static checkboxField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'checkbox',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n default_value: false,\n ...options,\n };\n }\n\n /**\n * Create a half-vector field definition\n */\n static halfVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'halfvec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a sparse vector field definition\n */\n static sparseVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'sparsevec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a basic schema from field definitions\n */\n static createBasicSchema(\n fields: Array<{ name: string; type: FieldType }>\n ): FieldDefinition[] {\n return fields.map((field, index) => ({\n name: field.name,\n type: field.type,\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: index + 1,\n }));\n }\n}\n","import {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from '../../types/api/column';\nimport {\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n} from '../../types/common/responses';\nimport { ColumnResource } from './column';\n\nexport interface ColumnBuilderOptions {\n tableName: string;\n columnResource: ColumnResource;\n}\n\n/**\n * Column Builder - provides a fluent interface for building column queries and operations\n */\nexport class ColumnBuilder {\n private tableName: string;\n private columnResource: ColumnResource;\n private queryOptions: ColumnQueryOptions = {};\n private updateData: ColumnUpdateRequest = {};\n\n constructor(options: ColumnBuilderOptions) {\n this.tableName = options.tableName;\n this.columnResource = options.columnResource;\n }\n\n /**\n * Add filter conditions\n */\n where(conditions: Partial<ColumnQueryOptions['where']>): ColumnBuilder {\n this.queryOptions.where = { ...this.queryOptions.where, ...conditions };\n return this;\n }\n\n /**\n * Set sorting\n */\n orderBy(\n field: keyof ColumnDetails,\n direction: 'asc' | 'desc' = 'asc'\n ): ColumnBuilder {\n if (!this.queryOptions.sort) {\n this.queryOptions.sort = [];\n }\n this.queryOptions.sort.push({ field, order: direction });\n return this;\n }\n\n /**\n * Set limit\n */\n limit(count: number): ColumnBuilder {\n this.queryOptions.limit = count;\n return this;\n }\n\n /**\n * Set offset\n */\n offset(count: number): ColumnBuilder {\n this.queryOptions.offset = count;\n return this;\n }\n\n /**\n * Set fields to select\n */\n select(fields: Array<keyof ColumnDetails>): ColumnBuilder {\n this.queryOptions.fields = fields;\n return this;\n }\n\n /**\n * Set data for update operations\n */\n set(data: ColumnUpdateRequest): ColumnBuilder {\n this.updateData = { ...this.updateData, ...data };\n return this;\n }\n\n /**\n * Execute findAll operation\n */\n async findAll(): Promise<\n BolticListResponse<ColumnDetails> | BolticErrorResponse\n > {\n return this.columnResource.findAll(this.tableName, this.queryOptions);\n }\n\n /**\n * Execute get operation (was findOne) - requires column name\n */\n async get(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for get operation',\n },\n };\n }\n\n return this.columnResource.get(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Execute update operation - requires column name\n */\n async update(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for update operation',\n },\n };\n }\n\n return this.columnResource.update(\n this.tableName,\n this.queryOptions.where.name as string,\n this.updateData\n );\n }\n\n /**\n * Execute delete operation - requires column name\n */\n async delete(): Promise<\n | BolticSuccessResponse<{ success: boolean; message?: string }>\n | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for delete operation',\n },\n };\n }\n\n return this.columnResource.delete(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Get the built query options (for debugging)\n */\n getQueryOptions(): ColumnQueryOptions {\n return { ...this.queryOptions };\n }\n\n /**\n * Get the update data (for debugging)\n */\n getUpdateData(): ColumnUpdateRequest {\n return { ...this.updateData };\n }\n}\n\n/**\n * Create a new column builder\n */\nexport function createColumnBuilder(\n options: ColumnBuilderOptions\n): ColumnBuilder {\n return new ColumnBuilder(options);\n}\n","// Main SDK exports\nexport { BolticClient, createClient } from './client';\nexport type { ClientOptions } from './client';\n\n// Type exports for external use\nexport type {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from './types/api/column';\nexport type {\n RecordData,\n RecordDeleteOptions,\n RecordQueryOptions,\n RecordWithId,\n} from './types/api/record';\nexport type {\n FieldDefinition,\n TableCreateRequest,\n TableRecord,\n TableUpdateRequest,\n} from './types/api/table';\n\n// Response types and helpers - Essential for type checking\nexport { isErrorResponse, isListResponse } from './types/common/responses';\nexport type {\n ApiResponse,\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n BulkResponse,\n ErrorResponse,\n QueryOptions,\n SuccessResponse,\n} from './types/common/responses';\n\n// Pagination and operation types\nexport type { PaginationInfo } from './types/common/operations';\n\n// Utility classes for schema and column management\nexport { ColumnHelpers } from './utils/column/helpers';\nexport { SchemaHelpers } from './utils/table/schema-helpers';\n\n// Filter utilities and constants\nexport {\n buildApiFilters,\n createFilter,\n FILTER_OPERATORS,\n FilterBuilder,\n mapFiltersToWhere,\n mapWhereToFilters,\n normalizeFilters,\n} from './utils/filters/filter-mapper';\nexport type { ApiFilter } from './utils/filters/filter-mapper';\n\n// Builder creation functions\nexport { createColumnBuilder } from './client/resources/column-builder';\nexport { createRecordBuilder } from './client/resources/record-builder';\nexport { createTableBuilder } from './client/resources/table-builder';\n\n// Error handling utilities\nexport {\n ApiError,\n createErrorWithContext,\n formatError,\n getHttpStatusCode,\n isNetworkError,\n ValidationError,\n} from './errors/utils';\nexport type { ValidationFailure } from './errors/utils';\n\n// HTTP adapter types for advanced users\nexport type {\n HttpAdapter,\n HttpRequestConfig,\n HttpResponse,\n} from './utils/http/adapter';\n\n// Testing utilities for SDK users\nexport {\n createErrorResponse,\n createMockResponse,\n createTestClient,\n} from './testing/test-client';\nexport type { MockClientOptions } from './testing/test-client';\n\n// Export all errors\nexport * from './errors';\n\n// Export all types\nexport * from './types';\n\n// SQL exports\nexport * from './client/resources/sql';\n\n// Version information\nexport const VERSION = '1.0.0';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/client/index.ts","../src/utils/column/helpers.ts","../src/utils/table/schema-helpers.ts","../src/client/resources/column-builder.ts","../src/index.ts"],"sourcesContent":["import { BolticClient, ClientOptions } from './boltic-client';\n\nexport function createClient(\n apiKey: string,\n options: ClientOptions = {}\n): BolticClient {\n return new BolticClient(apiKey, options);\n}\n\nexport type { Region } from '../types/config/environment';\nexport * from './core/auth-manager';\nexport * from './core/base-client';\nexport * from './core/base-resource';\nexport * from './core/config';\nexport * from './resources/record';\nexport * from './resources/record-builder';\nexport * from './resources/table';\nexport {\n createTableBuilder,\n TableBuilder,\n type TableBuilderOptions,\n} from './resources/table-builder';\nexport { BolticClient };\nexport type { ClientOptions };\n","import {\n ColumnUpdateRequest,\n DateFormatEnum,\n DecimalType,\n PhoneFormatType,\n TimeFormatEnum,\n} from '../../types/api/column';\nimport { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class ColumnHelpers {\n /**\n * Convert FieldDefinition to ColumnUpdateRequest\n */\n static fieldToUpdateRequest(field: FieldDefinition): ColumnUpdateRequest {\n return {\n name: field.name,\n type: field.type,\n description: field.description,\n is_nullable: field.is_nullable,\n is_unique: field.is_unique,\n is_indexed: field.is_indexed,\n is_visible: field.is_visible,\n is_primary_key: field.is_primary_key,\n is_readonly: field.is_readonly,\n field_order: field.field_order,\n default_value: field.default_value,\n alignment: field.alignment,\n decimals: field.decimals as DecimalType,\n currency_format: field.currency_format,\n selectable_items: field.selectable_items,\n multiple_selections: field.multiple_selections,\n phone_format: field.phone_format as PhoneFormatType,\n date_format: field.date_format as keyof typeof DateFormatEnum,\n time_format: field.time_format as keyof typeof TimeFormatEnum,\n timezone: field.timezone,\n vector_dimension: field.vector_dimension,\n };\n }\n\n /**\n * Apply default values to column definition\n */\n static applyDefaultValues(column: Partial<FieldDefinition>): FieldDefinition {\n if (!column.name || !column.type) {\n throw new Error('Column name and type are required');\n }\n\n return {\n name: column.name,\n type: column.type,\n is_nullable: true,\n is_unique: false,\n is_indexed: false,\n is_primary_key: false,\n is_visible: true,\n is_readonly: false,\n field_order: 1,\n alignment: 'left',\n multiple_selections: false,\n ...column,\n };\n }\n\n /**\n * Create a column definition with proper defaults\n */\n static createColumnDefinition(\n name: string,\n type: FieldType,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return this.applyDefaultValues({\n name,\n type,\n ...options,\n });\n }\n\n /**\n * Get column type display name\n */\n static getColumnTypeDisplayName(type: FieldType): string {\n const typeNames: Record<FieldType, string> = {\n text: 'Text',\n 'long-text': 'Long Text',\n number: 'Number',\n currency: 'Currency',\n checkbox: 'Checkbox',\n dropdown: 'Dropdown',\n email: 'Email',\n 'phone-number': 'Phone Number',\n link: 'Link',\n json: 'JSON',\n 'date-time': 'Date & Time',\n vector: 'Vector',\n halfvec: 'Half Vector',\n sparsevec: 'Sparse Vector',\n };\n\n return typeNames[type] || type;\n }\n}\n","import { FieldDefinition, FieldType } from '../../types/api/table';\n\nexport class SchemaHelpers {\n /**\n * Create a text field definition\n */\n static textField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a number field definition\n */\n static numberField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n ...options,\n };\n }\n\n /**\n * Create a currency field definition\n */\n static currencyField(\n name: string,\n currency: string = 'USD',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'currency',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n decimals: '0.00',\n currency_format: currency,\n ...options,\n };\n }\n\n /**\n * Create a dropdown field definition\n */\n static dropdownField(\n name: string,\n items: string[],\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'dropdown',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n selection_source: 'provide-static-list',\n selectable_items: items,\n multiple_selections: false,\n ...options,\n };\n }\n\n /**\n * Create a vector field definition\n */\n static vectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'vector',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a JSON field definition\n */\n static jsonField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'json',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a date-time field definition\n */\n static dateTimeField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'date-time',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n date_format: 'YYYY-MM-DD',\n time_format: 'HH:mm:ss',\n ...options,\n };\n }\n\n /**\n * Create an email field definition\n */\n static emailField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'email',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a long-text field definition\n */\n static longTextField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'long-text',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a link field definition\n */\n static linkField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'link',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n ...options,\n };\n }\n\n /**\n * Create a phone number field definition\n */\n static phoneNumberField(\n name: string,\n format: string = 'international',\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'phone-number',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n phone_format: format,\n ...options,\n };\n }\n\n /**\n * Create a checkbox field definition\n */\n static checkboxField(\n name: string,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'checkbox',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n default_value: false,\n ...options,\n };\n }\n\n /**\n * Create a half-vector field definition\n */\n static halfVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'halfvec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a sparse vector field definition\n */\n static sparseVectorField(\n name: string,\n dimension: number,\n options: Partial<FieldDefinition> = {}\n ): FieldDefinition {\n return {\n name,\n type: 'sparsevec',\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: 1,\n vector_dimension: dimension,\n ...options,\n };\n }\n\n /**\n * Create a basic schema from field definitions\n */\n static createBasicSchema(\n fields: Array<{ name: string; type: FieldType }>\n ): FieldDefinition[] {\n return fields.map((field, index) => ({\n name: field.name,\n type: field.type,\n is_nullable: true,\n is_primary_key: false,\n is_unique: false,\n is_visible: true,\n is_readonly: false,\n is_indexed: false,\n field_order: index + 1,\n }));\n }\n}\n","import {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from '../../types/api/column';\nimport {\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n} from '../../types/common/responses';\nimport { ColumnResource } from './column';\n\nexport interface ColumnBuilderOptions {\n tableName: string;\n columnResource: ColumnResource;\n}\n\n/**\n * Column Builder - provides a fluent interface for building column queries and operations\n */\nexport class ColumnBuilder {\n private tableName: string;\n private columnResource: ColumnResource;\n private queryOptions: ColumnQueryOptions = {};\n private updateData: ColumnUpdateRequest = {};\n\n constructor(options: ColumnBuilderOptions) {\n this.tableName = options.tableName;\n this.columnResource = options.columnResource;\n }\n\n /**\n * Add filter conditions\n */\n where(conditions: Partial<ColumnQueryOptions['where']>): ColumnBuilder {\n this.queryOptions.where = { ...this.queryOptions.where, ...conditions };\n return this;\n }\n\n /**\n * Set sorting\n */\n orderBy(\n field: keyof ColumnDetails,\n direction: 'asc' | 'desc' = 'asc'\n ): ColumnBuilder {\n if (!this.queryOptions.sort) {\n this.queryOptions.sort = [];\n }\n this.queryOptions.sort.push({ field, order: direction });\n return this;\n }\n\n /**\n * Set limit\n */\n limit(count: number): ColumnBuilder {\n this.queryOptions.limit = count;\n return this;\n }\n\n /**\n * Set offset\n */\n offset(count: number): ColumnBuilder {\n this.queryOptions.offset = count;\n return this;\n }\n\n /**\n * Set fields to select\n */\n select(fields: Array<keyof ColumnDetails>): ColumnBuilder {\n this.queryOptions.fields = fields;\n return this;\n }\n\n /**\n * Set data for update operations\n */\n set(data: ColumnUpdateRequest): ColumnBuilder {\n this.updateData = { ...this.updateData, ...data };\n return this;\n }\n\n /**\n * Execute findAll operation\n */\n async findAll(): Promise<\n BolticListResponse<ColumnDetails> | BolticErrorResponse\n > {\n return this.columnResource.findAll(this.tableName, this.queryOptions);\n }\n\n /**\n * Execute get operation (was findOne) - requires column name\n */\n async get(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for get operation',\n },\n };\n }\n\n return this.columnResource.get(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Execute update operation - requires column name\n */\n async update(): Promise<\n BolticSuccessResponse<ColumnDetails> | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for update operation',\n },\n };\n }\n\n return this.columnResource.update(\n this.tableName,\n this.queryOptions.where.name as string,\n this.updateData\n );\n }\n\n /**\n * Execute delete operation - requires column name\n */\n async delete(): Promise<\n | BolticSuccessResponse<{ success: boolean; message?: string }>\n | BolticErrorResponse\n > {\n if (!this.queryOptions.where?.name) {\n return {\n error: {\n code: 'MISSING_COLUMN_NAME',\n message: 'Column name is required for delete operation',\n },\n };\n }\n\n return this.columnResource.delete(\n this.tableName,\n this.queryOptions.where.name as string\n );\n }\n\n /**\n * Get the built query options (for debugging)\n */\n getQueryOptions(): ColumnQueryOptions {\n return { ...this.queryOptions };\n }\n\n /**\n * Get the update data (for debugging)\n */\n getUpdateData(): ColumnUpdateRequest {\n return { ...this.updateData };\n }\n}\n\n/**\n * Create a new column builder\n */\nexport function createColumnBuilder(\n options: ColumnBuilderOptions\n): ColumnBuilder {\n return new ColumnBuilder(options);\n}\n","// Main SDK exports\nexport { BolticClient, createClient } from './client';\nexport type { ClientOptions } from './client';\n\n// Type exports for external use\nexport type {\n ColumnDetails,\n ColumnQueryOptions,\n ColumnUpdateRequest,\n} from './types/api/column';\nexport type {\n AddIndexRequest,\n AddIndexResponse,\n DeleteIndexRequest,\n DeleteIndexResponse,\n ListIndexesQuery,\n ListIndexesResponse,\n} from './types/api/index';\nexport type {\n RecordData,\n RecordDeleteOptions,\n RecordQueryOptions,\n RecordWithId,\n} from './types/api/record';\nexport type {\n FieldDefinition,\n TableCreateRequest,\n TableRecord,\n TableUpdateRequest,\n} from './types/api/table';\n\n// Response types and helpers - Essential for type checking\nexport { isErrorResponse, isListResponse } from './types/common/responses';\nexport type {\n ApiResponse,\n BolticErrorResponse,\n BolticListResponse,\n BolticSuccessResponse,\n BulkResponse,\n ErrorResponse,\n QueryOptions,\n SuccessResponse,\n} from './types/common/responses';\n\n// Pagination and operation types\nexport type { PaginationInfo } from './types/common/operations';\n\n// Utility classes for schema and column management\nexport { ColumnHelpers } from './utils/column/helpers';\nexport { SchemaHelpers } from './utils/table/schema-helpers';\n\n// Filter utilities and constants\nexport {\n FILTER_OPERATORS,\n FilterBuilder,\n buildApiFilters,\n createFilter,\n mapFiltersToWhere,\n mapWhereToFilters,\n normalizeFilters,\n} from './utils/filters/filter-mapper';\nexport type { ApiFilter } from './utils/filters/filter-mapper';\n\n// Builder creation functions\nexport { createColumnBuilder } from './client/resources/column-builder';\nexport { createRecordBuilder } from './client/resources/record-builder';\nexport { createTableBuilder } from './client/resources/table-builder';\n\n// Error handling utilities\nexport {\n ApiError,\n ValidationError,\n createErrorWithContext,\n formatError,\n getHttpStatusCode,\n isNetworkError,\n} from './errors/utils';\nexport type { ValidationFailure } from './errors/utils';\n\n// HTTP adapter types for advanced users\nexport type {\n HttpAdapter,\n HttpRequestConfig,\n HttpResponse,\n} from './utils/http/adapter';\n\n// Testing utilities for SDK users\nexport {\n createErrorResponse,\n createMockResponse,\n createTestClient,\n} from './testing/test-client';\nexport type { MockClientOptions } from './testing/test-client';\n\n// Export all errors\nexport * from './errors';\n\n// Export all types\nexport * from './types';\n\n// SQL exports\nexport * from './client/resources/sql';\n\n// Version information\nexport const VERSION = '1.0.0';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";class e extends Error{constructor(e,t=[]){super(e),this.name="ValidationError",this.failures=t}}class t extends Error{constructor(e,t,r){super(e),this.name="ApiError",this.statusCode=t,this.response=r}}function r(e,t){const r=new Error(e);return t&&(r.context=t),r}function s(e){if(e&&"object"==typeof e){if("response"in e&&e.response&&"object"==typeof e.response){const t=e.response;if("status"in t&&"number"==typeof t.status)return t.status}if("status"in e&&"number"==typeof e.status)return e.status}return null}function i(e){if(e instanceof Error){const t=e.context,r=s(e);let i=`${e.name}: ${e.message}`;return r&&(i+=` (HTTP ${r})`),t&&(i+=`\nContext: ${JSON.stringify(t,null,2)}`),i}return String(e)}class n{constructor(e){this.tokenInfo=null,this.config={maxRetries:3,...e},this.validateApiKey(e.apiKey)}validateApiKey(e){if(!e||"string"!=typeof e||0===e.trim().length)throw r("API key is required and must be a non-empty string",{name:"AuthenticationError",code:"INVALID_API_KEY"});if(e.length<10)throw r("API key appears to be invalid (too short)",{name:"AuthenticationError",code:"INVALID_API_KEY_FORMAT"})}getAuthHeaders(){return{"x-boltic-token":this.config.apiKey}}updateApiKey(e){this.validateApiKey(e),this.config.apiKey=e,this.tokenInfo=null}isAuthenticated(){return!!this.config.apiKey}async validateApiKeyAsync(){try{return this.validateApiKey(this.config.apiKey),!0}catch{return!1}}getTokenInfo(){return this.tokenInfo?{...this.tokenInfo}:null}getMaxRetries(){return this.config.maxRetries||3}toString(){return`AuthManager { authenticated: ${this.isAuthenticated()}, maxRetries: ${this.getMaxRetries()} }`}toJSON(){return{authenticated:this.isAuthenticated(),maxRetries:this.getMaxRetries()}}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}class o{constructor(){try{this.axios=require("axios")}catch(e){throw r("Axios is required for Node.js < 18. Please install axios: npm install axios",{error:e})}}async request(e){var t,s,i,n,o;try{const t={url:e.url,method:e.method.toLowerCase(),headers:e.headers,params:e.params,data:e.data,timeout:e.timeout,signal:e.signal,validateStatus:()=>!0},r=await this.axios(t);return{data:r.data,status:r.status,statusText:r.statusText,headers:r.headers||{}}}catch(a){const d=a;if("ECONNABORTED"===d.code||(null==(t=d.message)?void 0:t.includes("timeout")))throw r("Request timeout",{url:e.url,method:e.method,timeout:e.timeout});if("ERR_NETWORK"===d.code||"ENOTFOUND"===d.code||"ECONNREFUSED"===d.code||"EHOSTUNREACH"===d.code||"ETIMEDOUT"===d.code||"ERR_INTERNET_DISCONNECTED"===d.code||(null==(s=d.message)?void 0:s.includes("network"))||(null==(i=d.message)?void 0:i.includes("internet"))||(null==(n=d.message)?void 0:n.includes("connection"))||(null==(o=d.message)?void 0:o.includes("resolve")))throw r("Network connection failed. Please check your internet connection or VPN settings.",{url:e.url,method:e.method,networkError:!0,errorCode:d.code,originalMessage:d.message});if("AbortError"===d.name||"ERR_CANCELED"===d.code)throw r("Request was aborted",{url:e.url,method:e.method});throw r(`HTTP request failed: ${d.message||"Unknown error"}`,{url:e.url,method:e.method,originalError:a})}}}class a{async request(e){const t=new URL(e.url);e.params&&Object.entries(e.params).forEach(([e,r])=>{null!=r&&t.searchParams.append(e,String(r))});const s={method:e.method,headers:{"Content-Type":"application/json",...e.headers},signal:e.signal};e.data&&["POST","PUT","PATCH","DELETE"].includes(e.method)&&(s.body=JSON.stringify(e.data));try{const r=new AbortController;let i;e.timeout&&(i=setTimeout(()=>r.abort(),e.timeout),s.signal=e.signal?(()=>{const t=new AbortController;return e.signal.addEventListener("abort",()=>t.abort()),r.signal.addEventListener("abort",()=>t.abort()),t.signal})():r.signal);const n=await fetch(t.toString(),s);i&&clearTimeout(i);const o=n.headers.get("content-type");let a;a=(null==o?void 0:o.includes("application/json"))?await n.json():await n.text();const d={};n.headers.forEach((e,t)=>{d[t]=e});return{data:a,status:n.status,statusText:n.statusText,headers:d}}catch(i){if(i instanceof Error&&"AbortError"===i.name)throw r("Request was aborted",{type:"AbortError",url:e.url,method:e.method});if(i instanceof Error){const t=i.message.toLowerCase();if("TypeError"===i.name&&(t.includes("network")||t.includes("fetch")||t.includes("failed to fetch")||t.includes("internet")||t.includes("connection")||t.includes("resolve")||t.includes("unreachable")))throw r("Network connection failed. Please check your internet connection or VPN settings.",{url:e.url,method:e.method,networkError:!0,originalMessage:i.message})}throw r(`HTTP request failed: ${i instanceof Error?i.message:"Unknown error"}`,{url:e.url,method:e.method,originalError:i})}}}function d(){if("undefined"!=typeof fetch)return new a;try{return new o}catch(e){throw r("No suitable HTTP adapter found. Please use Node.js >= 18 or install axios: npm install axios",{error:e})}}class l{constructor(){this.requestInterceptors=new Map,this.responseInterceptors=new Map,this.nextId=0,this.request={use:e=>{const t=this.nextId++;return this.requestInterceptors.set(t,e),t},eject:e=>{this.requestInterceptors.delete(e)}},this.response={use:(e,t)=>{const r=this.nextId++;return this.responseInterceptors.set(r,{fulfilled:e,rejected:t}),r},eject:e=>{this.responseInterceptors.delete(e)}}}async executeRequestInterceptors(e){let t=e;for(const r of this.requestInterceptors.values())t=await r(t);return t}async executeResponseInterceptors(e){let t=e;for(const{fulfilled:r}of this.responseInterceptors.values())r&&(t=await r(t));return t}async executeErrorInterceptors(e){let t=e;for(const{rejected:r}of this.responseInterceptors.values())r&&(t=await r(t));return t}}class u{constructor(e,t){this.config=e,this.authManager=t,this.httpAdapter=d(),this.interceptors=new l,this.setupDefaultInterceptors()}setupDefaultInterceptors(){this.interceptors.request.use(e=>{const t=this.authManager.getAuthHeaders();return e.headers={...e.headers,...t,...this.config.headers},e}),this.interceptors.response.use(e=>(this.config.debug&&console.log("HTTP Response:",e),e),e=>this.handleError(e))}handleError(e){var t;if(this.config.debug&&console.error("HTTP Error:",e),e instanceof Error&&e.context)throw e;const i=s(e);if(!i)throw r("Network request failed",{name:"NetworkError",originalError:e});const n=(null==(t=e.response)?void 0:t.data)||e.data;throw r((null==n?void 0:n.message)||(null==n?void 0:n.error)||`HTTP ${i} error`,{name:"ApiError",statusCode:i,response:n,isClientError:i>=400&&i<500,isServerError:i>=500,isAuthError:401===i||403===i,isNotFoundError:404===i,isRateLimitError:429===i})}async request(e){let t;const i=this.config.maxRetries;for(let o=0;o<=i;o++)try{e.url.startsWith("http")||(e.url=`${this.config.baseURL}${e.url}`),e.timeout||(e.timeout=this.config.timeout);const t=await this.interceptors.executeRequestInterceptors(e),s=await this.httpAdapter.request(t);if(s.status>=400){const e=r(`HTTP ${s.status} error`,{name:"ApiError",statusCode:s.status,response:s.data,statusText:s.statusText});throw await this.interceptors.executeErrorInterceptors(e)}return await this.interceptors.executeResponseInterceptors(s)}catch(n){if(t=n,o===i)break;const e=s(n);if(e&&e>=400&&e<500)break;if(o<i){const e=this.config.retryDelay*Math.pow(2,o);await new Promise(t=>setTimeout(t,e))}}throw await this.interceptors.executeErrorInterceptors(t)}get(e,t){return this.request({...t,method:"GET",url:e})}post(e,t,r){return this.request({...r,method:"POST",url:e,data:t})}put(e,t,r){return this.request({...r,method:"PUT",url:e,data:t})}patch(e,t,r){return this.request({...r,method:"PATCH",url:e,data:t})}delete(e,t){return this.request({...t,method:"DELETE",url:e})}getInterceptors(){return this.interceptors}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}}const c={"asia-south1":{local:{baseURL:"http://localhost:8000",timeout:3e4,debug:!0},sit:{baseURL:"https://asia-south1.api.fcz0.de/service/sdk/boltic-tables",timeout:15e3},uat:{baseURL:"https://asia-south1.api.uat.fcz0.de/service/sdk/boltic-tables",timeout:15e3},prod:{baseURL:"https://asia-south1.api.boltic.io/service/sdk/boltic-tables",timeout:1e4}},"us-central1":{local:{baseURL:"http://localhost:8000",timeout:3e4,debug:!0},sit:{baseURL:"https://us-central1.api.fcz0.de/service/sdk/boltic-tables",timeout:15e3},uat:{baseURL:"https://us-central1.api.uat.fcz0.de/service/sdk/boltic-tables",timeout:15e3},prod:{baseURL:"https://us-central1.api.boltic.io/service/sdk/boltic-tables",timeout:1e4}}},h=c["asia-south1"];class m{constructor(e,t="prod",r="asia-south1",s){const i=c[r][t];this.config={apiKey:e,environment:t,region:r,retryAttempts:3,retryDelay:1e3,maxRetries:3,debug:!1,headers:{},...i,...s}}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}toString(){return`ConfigManager { environment: "${this.config.environment}", region: "${this.config.region}", debug: ${this.config.debug} }`}toJSON(){const e={...this.config};return delete e.apiKey,e}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}function p(e,t){if(!t||0===t.length)return e;const r={};for(const s of t)s in e&&(r[s]=e[s]);return r}function f(e,t){return t&&0!==t.length?e.map(e=>p(e,t)):e}const g={path:"/tables/{table_id}/fields/list",method:"POST",authenticated:!0,rateLimit:{requests:200,window:6e4}},_={path:"/tables/{table_id}/fields",method:"POST",authenticated:!0},b={path:"/tables/{table_id}/fields/{field_id}",method:"GET",authenticated:!0,rateLimit:{requests:300,window:6e4}},y={path:"/tables/{table_id}/fields/{field_id}",method:"PATCH",authenticated:!0},R={path:"/tables/{table_id}/fields/{field_id}",method:"DELETE",authenticated:!0},E=(e,t={})=>{let r=e.path;Object.entries(t).forEach(([e,t])=>{r=r.replace(`{${e}}`,encodeURIComponent(t))});const s=r.match(/\{([^}]+)\}/g);if(s)throw new Error(`Missing path parameters: ${s.join(", ")}`);return r},w=Object.freeze({MMDDYY:"%m/%d/%y",MMDDYYYY:"%m/%d/%Y",MM_DD_YYYY:"%m-%d-%Y",DD_MM_YYYY:"%d-%m-%Y",DDMMYYYY:"%d/%m/%Y",DDMMYY:"%d/%m/%y",YYYY_MM_DD:"%Y-%m-%d",MMMM__DD__YYYY:"%B %d %Y",MMM__DD__YYYY:"%b %d %Y",ddd__MMM__DD__YYYY:"%a %b %d %Y"}),T=Object.freeze({HH_mm_ss:"%H:%M:%S",HH_mm_ssZ:"%H:%M:%SZ",HH_mm_ss_SSS:"%H:%M:%S.%f",HH_mm_ss__Z:"%H:%M:%S %Z",HH_mm__AMPM:"%I:%M %p",HH_mm_ss__AMPM:"%I:%M:%S %p"});function A(e){if(!e||"object"!=typeof e)throw new Error("Invalid request: single column data is required");if(!e.name||!e.type)throw new Error("Column name and type are required");return{name:(t=e).name,type:t.type,is_nullable:t.is_nullable??!0,is_primary_key:t.is_primary_key??!1,is_unique:t.is_unique??!1,is_visible:t.is_visible??!0,is_readonly:t.is_readonly??!1,is_indexed:t.is_indexed??!1,field_order:t.field_order??1,alignment:t.alignment??"left",timezone:t.timezone??void 0,date_format:t.date_format?v(t.date_format):void 0,time_format:t.time_format?I(t.time_format):void 0,decimals:t.decimals??void 0,currency_format:t.currency_format??void 0,selection_source:"dropdown"!==t.type||t.selection_source?t.selection_source??void 0:"provide-static-list",selectable_items:t.selectable_items??void 0,multiple_selections:t.multiple_selections??void 0,phone_format:t.phone_format??void 0,vector_dimension:t.vector_dimension??void 0,description:t.description??void 0,default_value:t.default_value??void 0};var t}function v(e){return w[e]||e}function I(e){return T[e]||e}class N{constructor(e,t={}){this.config={apiKey:e,...t},this.httpAdapter=d();const r=t.environment||"prod",s=t.region||"asia-south1";this.baseURL=this.getBaseURL(r,s)}getBaseURL(e,t){const r=c[t];if(!r)throw new Error(`Unsupported region: ${t}`);const s=r[e];if(!s)throw new Error(`Unsupported environment: ${e} for region: ${t}`);return`${s.baseURL}/v1`}async createColumn(e,t){try{const r=_,s=`${this.baseURL}${E(r,{table_id:e})}`,i=A(t),n=await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),data:i,timeout:this.config.timeout});return this.config.debug&&console.log("Column API Response:",JSON.stringify(n.data,null,2)),n.data}catch(r){return this.formatErrorResponse(r)}}async createColumns(e,t){try{const r=t.columns,s=[];for(const t of r){const r=await this.createColumn(e,t);if("error"in r)return r;s.push(r.data)}if(t.fields&&s.length>0){const e=f(s,t.fields);s.splice(0,s.length,...e)}return{data:s,message:"Columns created successfully"}}catch(r){return this.formatErrorResponse(r)}}async listColumns(e,t={}){try{const r=g,s=`${this.baseURL}${E(r,{table_id:e})}?no_cache=true`,i=(await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),data:t,timeout:this.config.timeout})).data;return t.fields&&i.data&&(i.data=f(i.data,t.fields)),i}catch(r){return this.formatErrorResponse(r)}}async getColumn(e,t,r={}){try{const s=b,i=`${this.baseURL}${E(s,{table_id:e,field_id:t})}`,n=await this.httpAdapter.request({url:i,method:s.method,headers:this.buildHeaders(),timeout:this.config.timeout});this.config.debug&&console.log("Column API Response:",JSON.stringify(n.data,null,2));const o=n.data;return r.fields&&o.data&&(o.data=p(o.data,r.fields)),o}catch(s){return this.formatErrorResponse(s)}}async updateColumn(e,t,r){try{const s=y,i=`${this.baseURL}${E(s,{table_id:e,field_id:t})}`,n=function(e){const t={};return void 0!==e.name&&(t.name=e.name),void 0!==e.type&&(t.type=e.type),void 0!==e.description&&(t.description=e.description),void 0!==e.is_nullable&&(t.is_nullable=e.is_nullable),void 0!==e.is_unique&&(t.is_unique=e.is_unique),void 0!==e.is_primary_key&&(t.is_primary_key=e.is_primary_key),void 0!==e.is_indexed&&(t.is_indexed=e.is_indexed),void 0!==e.is_visible&&(t.is_visible=e.is_visible),void 0!==e.is_readonly&&(t.is_readonly=e.is_readonly),void 0!==e.default_value&&(t.default_value=e.default_value),void 0!==e.field_order&&(t.field_order=e.field_order),void 0!==e.alignment&&(t.alignment=e.alignment),void 0!==e.decimals&&(t.decimals=e.decimals),void 0!==e.currency_format&&(t.currency_format=e.currency_format),"dropdown"===e.type||void 0!==e.selectable_items?t.selection_source="provide-static-list":void 0!==e.selection_source&&(t.selection_source=e.selection_source),void 0!==e.selectable_items&&(t.selectable_items=e.selectable_items),void 0!==e.multiple_selections&&(t.multiple_selections=e.multiple_selections),void 0!==e.phone_format&&(t.phone_format=e.phone_format),void 0!==e.timezone&&(t.timezone=e.timezone),void 0!==e.vector_dimension&&(t.vector_dimension=e.vector_dimension),void 0!==e.date_format&&(t.date_format=v(e.date_format)),void 0!==e.time_format&&(t.time_format=I(e.time_format)),t}(r),o=(await this.httpAdapter.request({url:i,method:s.method,headers:this.buildHeaders(),data:n,timeout:this.config.timeout})).data;return r.fields&&o.data&&(o.data=p(o.data,r.fields)),o}catch(s){return this.formatErrorResponse(s)}}async deleteColumn(e,t){try{const r=R,s=`${this.baseURL}${E(r,{table_id:e,field_id:t})}`;return(await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),timeout:this.config.timeout})).data}catch(r){return this.formatErrorResponse(r)}}async findColumnByName(e,t){try{const r={page:{page_no:1,page_size:1},filters:[{field:"name",operator:"=",values:[t]}],sort:[]},s=await this.listColumns(e,r);if("error"in s)return s;const i=s.data[0]||null;return{data:i,message:i?"Column found":"Column not found"}}catch(r){return this.formatErrorResponse(r)}}convertColumnDetailsToUpdateRequest(e){return{name:e.name,type:e.type,description:e.description,is_nullable:e.is_nullable,is_unique:e.is_unique,is_indexed:e.is_indexed,is_visible:e.is_visible,is_primary_key:e.is_primary_key,is_readonly:e.is_readonly,default_value:e.default_value,field_order:e.field_order,alignment:e.alignment,decimals:e.decimals,currency_format:e.currency_format,selection_source:e.selection_source,selectable_items:e.selectable_items,multiple_selections:e.multiple_selections,phone_format:e.phone_format,date_format:e.date_format,time_format:e.time_format,timezone:e.timezone,vector_dimension:e.vector_dimension}}async updateColumnByName(e,t,r){try{const s=await this.findColumnByName(e,t);if("error"in s)return s;if(!s.data)return{error:{code:"COLUMN_NOT_FOUND",message:`Column '${t}' not found in table`,meta:["404"]}};const i={...this.convertColumnDetailsToUpdateRequest(s.data),...r};return await this.updateColumn(e,s.data.id,i)}catch(s){return this.formatErrorResponse(s)}}async deleteColumnByName(e,t){try{const r=await this.findColumnByName(e,t);return"error"in r?r:r.data?await this.deleteColumn(e,r.data.id):{error:{code:"COLUMN_NOT_FOUND",message:`Column '${t}' not found in table`,meta:["Column not found"]}}}catch(r){return this.formatErrorResponse(r)}}buildHeaders(){return{"Content-Type":"application/json",Accept:"application/json","x-boltic-token":this.config.apiKey}}formatErrorResponse(e){var t,r,s;if(this.config.debug&&console.error("Columns API Error:",e),e&&"object"==typeof e&&"response"in e){const i=e;return(null==(r=null==(t=i.response)?void 0:t.data)?void 0:r.error)?i.response.data:{error:{code:"API_ERROR",message:e.message||"Unknown API error",meta:[`Status: ${(null==(s=i.response)?void 0:s.status)||"unknown"}`]}}}return e&&"object"==typeof e&&"message"in e?{error:{code:"CLIENT_ERROR",message:e.message,meta:["Client-side error occurred"]}}:{error:{code:"UNKNOWN_ERROR",message:"An unexpected error occurred",meta:["Unknown error type"]}}}}const C={path:"/tables/list",method:"POST",authenticated:!0,rateLimit:{requests:200,window:6e4}},O={path:"/tables",method:"POST",authenticated:!0},L={path:"/tables/{table_id}",method:"GET",authenticated:!0,rateLimit:{requests:300,window:6e4}},x={path:"/tables/{table_id}",method:"PATCH",authenticated:!0},$={path:"/tables/{table_id}",method:"DELETE",authenticated:!0},U=(e,t={})=>{let r=e.path;Object.entries(t).forEach(([e,t])=>{r=r.replace(`{${e}}`,encodeURIComponent(t))});const s=r.match(/\{([^}]+)\}/g);if(s)throw new Error(`Missing path parameters: ${s.join(", ")}`);return r},q={EQUALS:"=",NOT_EQUALS:"!=",GREATER_THAN:">",GREATER_THAN_EQUAL:">=",LESS_THAN:"<",LESS_THAN_EQUAL:"<=",LIKE:"LIKE",ILIKE:"ILIKE",STARTS_WITH:"STARTS WITH",IN:"IN",NOT_IN:"NOT IN",IS_EMPTY:"IS EMPTY",IS_NULL:"IS NULL",IS_NOT_NULL:"IS NOT NULL",BETWEEN:"BETWEEN",ARRAY_CONTAINS:"@>",ARRAY_NOT_CONTAINS:"NOT @>",ANY:"ANY",IS_ONE_OF_ARRAY:"IS ONE OF",DROPDOWN_ITEM_STARTS_WITH:"DROPDOWN ITEM STARTS WITH",WITHIN:"WITHIN"},S={$eq:q.EQUALS,$ne:q.NOT_EQUALS,$gt:q.GREATER_THAN,$gte:q.GREATER_THAN_EQUAL,$lt:q.LESS_THAN,$lte:q.LESS_THAN_EQUAL,$like:q.LIKE,$ilike:q.ILIKE,$startsWith:q.STARTS_WITH,$in:q.IN,$notIn:q.NOT_IN,$between:q.BETWEEN,$isEmpty:q.IS_EMPTY,$isNull:q.IS_NULL,$isNotNull:q.IS_NOT_NULL,$arrayContains:q.ARRAY_CONTAINS,$arrayNotContains:q.ARRAY_NOT_CONTAINS,$any:q.ANY,$isOneOfArray:q.IS_ONE_OF_ARRAY,$dropdownItemStartsWith:q.DROPDOWN_ITEM_STARTS_WITH,$within:q.WITHIN};function D(e){return Array.isArray(e)?e.length>0&&"object"==typeof e[0]&&"field"in e[0]&&"operator"in e[0]&&"values"in e[0]?e:(console.warn("Legacy Record<string, unknown>[] filter format detected. Please migrate to the new filter format."),[]):k(e)}function k(e){const t=[];return Object.entries(e).forEach(([e,r])=>{"object"!=typeof r||Array.isArray(r)||null===r?t.push({field:e,operator:q.EQUALS,values:[r]}):Object.entries(r).forEach(([r,s])=>{const i=S[r];if(!i)throw new Error(`Unsupported operator: ${r}`);let n;n=i===q.BETWEEN&&Array.isArray(s)&&2===s.length?s:i!==q.IN&&i!==q.NOT_IN&&i!==q.IS_ONE_OF_ARRAY||!Array.isArray(s)?i===q.IS_NULL||i===q.IS_NOT_NULL||i===q.IS_EMPTY?[]:[s]:s,t.push({field:e,operator:i,values:n})})}),t}class M{constructor(){this.filters=[]}equals(e,t){return this.filters.push({field:e,operator:q.EQUALS,values:[t]}),this}notEquals(e,t){return this.filters.push({field:e,operator:q.NOT_EQUALS,values:[t]}),this}greaterThan(e,t){return this.filters.push({field:e,operator:q.GREATER_THAN,values:[t]}),this}lessThan(e,t){return this.filters.push({field:e,operator:q.LESS_THAN,values:[t]}),this}between(e,t,r){return this.filters.push({field:e,operator:q.BETWEEN,values:[t,r]}),this}in(e,t){return this.filters.push({field:e,operator:q.IN,values:t}),this}like(e,t){return this.filters.push({field:e,operator:q.LIKE,values:[t]}),this}startsWith(e,t){return this.filters.push({field:e,operator:q.STARTS_WITH,values:[t]}),this}isEmpty(e){return this.filters.push({field:e,operator:q.IS_EMPTY,values:[]}),this}isNull(e){return this.filters.push({field:e,operator:q.IS_NULL,values:[]}),this}arrayContains(e,t){return this.filters.push({field:e,operator:q.ARRAY_CONTAINS,values:[t]}),this}build(){return[...this.filters]}clear(){return this.filters=[],this}}function P(e){return{name:e.name,type:e.type,is_nullable:e.is_nullable??!0,is_primary_key:e.is_primary_key??!1,is_unique:e.is_unique??!1,is_indexed:e.is_indexed??!1,is_visible:e.is_visible??!0,is_readonly:e.is_readonly??!1,field_order:e.field_order??1,alignment:e.alignment??"left",timezone:e.timezone??void 0,date_format:e.date_format??void 0,time_format:e.time_format??void 0,decimals:e.decimals??void 0,currency_format:e.currency_format??void 0,selection_source:"dropdown"!==e.type||e.selection_source?e.selection_source??void 0:"provide-static-list",selectable_items:e.selectable_items??void 0,multiple_selections:e.multiple_selections??!1,phone_format:e.phone_format??void 0,vector_dimension:e.vector_dimension??void 0,description:e.description,default_value:e.default_value}}class B{constructor(e,t={}){this.config={apiKey:e,...t},this.httpAdapter=d();const r=t.environment||"prod",s=t.region||"asia-south1";this.baseURL=this.getBaseURL(r,s)}getBaseURL(e,t){const r=c[t];if(!r)throw new Error(`Unsupported region: ${t}`);const s=r[e];if(!s)throw new Error(`Unsupported environment: ${e} for region: ${t}`);return`${s.baseURL}/v1`}async createTable(e,t={}){try{const r=O,s=`${this.baseURL}${r.path}`,i=function(e,t={}){return{name:e.name,description:e.description,fields:e.fields.map(P),is_ai_generated_schema:t.is_ai_generated_schema||!1,is_template:t.is_template||!1}}(e,t);return(await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),data:i,timeout:this.config.timeout})).data}catch(r){return this.formatErrorResponse(r)}}async listTables(e={}){try{const t=C,r=`${this.baseURL}${t.path}`,s=(await this.httpAdapter.request({url:r,method:t.method,headers:this.buildHeaders(),data:e,timeout:this.config.timeout})).data;return e.fields&&s.data&&(s.data=f(s.data,e.fields)),s}catch(t){return this.formatErrorResponse(t)}}async getTable(e,t={}){try{const r=L,s=`${this.baseURL}${U(r,{table_id:e})}`,i=(await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),timeout:this.config.timeout})).data;return t.fields&&i.data&&(i.data=p(i.data,t.fields)),i}catch(r){return this.formatErrorResponse(r)}}async updateTable(e,t){try{const{fields:r,...s}=t,i=x,n=`${this.baseURL}${U(i,{table_id:e})}`,o=(await this.httpAdapter.request({url:n,method:i.method,headers:this.buildHeaders(),data:s,timeout:this.config.timeout})).data;return r&&o.data&&(o.data=p(o.data,r)),o}catch(r){return this.formatErrorResponse(r)}}async deleteTable(e){try{const t=$,r=`${this.baseURL}${U(t,{table_id:e})}`;return(await this.httpAdapter.request({url:r,method:t.method,headers:this.buildHeaders(),timeout:this.config.timeout})).data}catch(t){return this.formatErrorResponse(t)}}buildHeaders(){return{"Content-Type":"application/json",Accept:"application/json","x-boltic-token":this.config.apiKey}}formatErrorResponse(e){var t,r,s;if(this.config.debug&&console.error("Tables API Error:",e),e&&"object"==typeof e&&"response"in e){const i=e;return(null==(r=null==(t=i.response)?void 0:t.data)?void 0:r.error)?i.response.data:{error:{code:"API_ERROR",message:e.message||"Unknown API error",meta:[`Status: ${(null==(s=i.response)?void 0:s.status)||"unknown"}`]}}}return e&&"object"==typeof e&&"message"in e?{error:{code:"CLIENT_ERROR",message:e.message,meta:["Client-side error occurred"]}}:{error:{code:"UNKNOWN_ERROR",message:"An unexpected error occurred",meta:["Unknown error type"]}}}}function H(e){return"error"in e&&void 0!==e.error}function j(e){return"pagination"in e}class Y{constructor(e,t){this.client=e,this.basePath=t}getBasePath(){return this.basePath}async makeRequest(e,t,r,s){const n=`${this.basePath}${t}`;try{let t;switch(e){case"GET":t=await this.client.get(n,{params:null==s?void 0:s.params});break;case"POST":t=await this.client.post(n,r,{params:null==s?void 0:s.params});break;case"PUT":t=await this.client.put(n,r,{params:null==s?void 0:s.params});break;case"PATCH":t=await this.client.patch(n,r,{params:null==s?void 0:s.params});break;case"DELETE":t=await this.client.delete(n,{params:null==s?void 0:s.params})}return t.data}catch(o){return{error:{code:"CLIENT_ERROR",message:i(o),meta:["Request failed"]}}}}buildQueryParams(e={}){var t,r;const s={};return(null==(t=e.fields)?void 0:t.length)&&(s.fields=e.fields.join(",")),(null==(r=e.sort)?void 0:r.length)&&(s.sort=e.sort.map(e=>`${e.field}:${e.order}`).join(",")),void 0!==e.limit&&(s.limit=e.limit),void 0!==e.offset&&(s.offset=e.offset),e.where&&Object.entries(e.where).forEach(([e,t])=>{null!=t&&(s[`where[${e}]`]="object"==typeof t?JSON.stringify(t):t)}),s}handleResponse(e){return"error"in e&&this.client.getConfig().debug&&console.error("API Error:",e.error),e}}class F extends Y{constructor(e){super(e,"/v1/tables");const t=e.getConfig();this.tablesApiClient=new B(t.apiKey,{environment:t.environment,region:t.region,timeout:t.timeout,debug:t.debug,retryAttempts:t.retryAttempts,retryDelay:t.retryDelay,headers:t.headers})}async create(e){try{const r={...e};e.fields&&e.fields.length>0&&(r.fields=await this.processFieldsDefaults(e.fields));const s=await this.tablesApiClient.createTable(r);if(H(s))throw new t(s.error.message||"Create table failed",400,s.error);return s}catch(r){throw r instanceof t?r:new t(this.formatError(r),500)}}async processFieldsDefaults(e){const t=[];for(let r=0;r<e.length;r++){const s={...e[r]};if(void 0===s.is_primary_key&&(s.is_primary_key=!1),void 0===s.is_unique&&(s.is_unique=!1),void 0===s.is_nullable&&(s.is_nullable=!0),void 0===s.is_indexed&&(s.is_indexed=!1),void 0===s.field_order&&(s.field_order=r+1),s.field_order<=0||s.field_order>=2147483647)throw new Error("Field order must be a number greater than 0 and less than 2147483647");t.push(s)}return t}transformTableQueryToApiRequest(e){const t={page:{page_no:1,page_size:e.limit||100},filters:[],sort:[]};if(e.offset&&e.limit){const r=Math.floor(e.offset/e.limit)+1;t.page.page_no=r}return e.where&&Object.entries(e.where).forEach(([e,r])=>{null!=r&&t.filters.push({field:e,operator:"=",values:[r]})}),e.sort&&(t.sort=e.sort.map(e=>({field:e.field,direction:e.order}))),t}async findAll(e={}){try{const r=this.transformTableQueryToApiRequest(e),s=await this.tablesApiClient.listTables(r);if(H(s))throw new t(s.error.message||"List tables failed",400,s.error);return s}catch(r){throw r instanceof t?r:new t(this.formatError(r),500)}}async findOne(r){var s,i,n;try{if(!(null==(s=r.where)?void 0:s.id)&&!(null==(i=r.where)?void 0:i.name))throw new e("Either id or name must be provided in where clause");if(null==(n=r.where)?void 0:n.id){const e=await this.tablesApiClient.getTable(r.where.id);if(H(e)){if("TABLE_NOT_FOUND"===e.error.code)return{data:null,message:"Table not found"};throw new t(e.error.message||"Get table failed",400,e.error)}return e}{const e={page:{page_no:1,page_size:1},filters:[{field:"name",operator:"=",values:[r.where.name]}],sort:[]},s=await this.tablesApiClient.listTables(e);if(H(s))throw new t(s.error.message||"Find table by name failed",400,s.error);const i=j(s)?s.data[0]:null;return{data:i||null,message:i?"Table found":"Table not found"}}}catch(o){throw o instanceof t||o instanceof e?o:new t(this.formatError(o),500)}}async findByName(e){return this.findOne({where:{name:e}})}async findById(e){return this.findOne({where:{id:e}})}async update(e,r){try{const s=await this.findByName(e);if(!s.data)throw new t(`Table '${e}' not found`,404);if(s.data.snapshot_url)throw new t(`Cannot update snapshot table '${e}'. Snapshots are read-only and cannot be modified.`,400);const i=await this.tablesApiClient.updateTable(s.data.id,r);if(H(i))throw new t(i.error.message||"Update table failed",400,i.error);return i}catch(s){throw s instanceof t?s:new t(this.formatError(s),500)}}async delete(e){try{const r=await this.findByName(e);if(!r.data)throw new t(`Table '${e}' not found`,404);if(r.data.snapshot_url)throw new t(`Cannot delete snapshot table '${e}'. Snapshots are read-only and cannot be deleted.`,400);const s=await this.tablesApiClient.deleteTable(r.data.id);if(H(s))throw new t(s.error.message||"Delete table failed",400,s.error);return s}catch(r){throw r instanceof t?r:new t(this.formatError(r),500)}}async rename(e,r){try{return await this.update(e,{name:r})}catch(s){throw s instanceof t?s:new t(this.formatError(s),500)}}async setAccess(e){try{return await this.update(e.table_name,{is_shared:e.is_shared})}catch(r){throw r instanceof t?r:new t(this.formatError(r),500)}}formatError(e){return e instanceof Error?e.message:"string"==typeof e?e:"An unexpected error occurred"}}class K extends Y{constructor(e){super(e,"/v1/tables");const t=e.getConfig();this.columnsApiClient=new N(t.apiKey,{environment:t.environment,region:t.region,timeout:t.timeout,debug:t.debug,retryAttempts:t.retryAttempts,retryDelay:t.retryDelay,headers:t.headers}),this.tablesApiClient=new B(t.apiKey,{environment:t.environment,region:t.region,timeout:t.timeout,debug:t.debug,retryAttempts:t.retryAttempts,retryDelay:t.retryDelay,headers:t.headers})}async create(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=await this.processColumnDefaults(r.id,t),i=await this.columnsApiClient.createColumn(r.id,s);return H(i),i}catch(r){return{error:{code:"CREATE_COLUMN_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async processColumnDefaults(e,t){const r={...t};if(void 0===r.is_primary_key&&(r.is_primary_key=!1),void 0===r.is_unique&&(r.is_unique=!1),void 0===r.is_nullable&&(r.is_nullable=!0),void 0===r.is_indexed&&(r.is_indexed=!1),void 0===r.field_order&&(r.field_order=await this.generateFieldOrder(e)),r.field_order<=0||r.field_order>=2147483647)throw new Error("Field order must be a number greater than 0 and less than 2147483647");return r}async generateFieldOrder(e){try{const t=await this.columnsApiClient.listColumns(e);let r=0;if(!H(t)&&t.data&&Array.isArray(t.data))for(const e of t.data)e.field_order&&e.field_order>r&&(r=e.field_order);return r+1}catch(t){return Math.floor(Date.now()/1e3)%2147483647}}transformColumnQueryToApiRequest(e){const t={page:{page_no:1,page_size:e.limit||100},filters:[],sort:[]};if(e.offset&&e.limit){const r=Math.floor(e.offset/e.limit)+1;t.page.page_no=r}return e.where&&Object.entries(e.where).forEach(([e,r])=>{null!=r&&t.filters.push({field:e,operator:"=",values:[r]})}),e.sort&&(t.sort=e.sort.map(e=>({field:e.field,direction:e.order}))),t}async createMany(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=[];for(const e of t){const t=await this.processColumnDefaults(r.id,e);s.push(t)}const i=await this.columnsApiClient.createColumns(r.id,{columns:s});return H(i),i}catch(r){return{error:{code:"CREATE_COLUMNS_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async findAll(e,t={}){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=this.transformColumnQueryToApiRequest(t),i=await this.columnsApiClient.listColumns(r.id,s);return H(i),i}catch(r){return{error:{code:"LIST_COLUMNS_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async get(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=await this.columnsApiClient.findColumnByName(r.id,t);return H(s)?s:s.data?{data:s.data,message:"Column found successfully"}:{error:{code:"COLUMN_NOT_FOUND",message:`Column '${t}' not found in table '${e}'`}}}catch(r){return{error:{code:"GET_COLUMN_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async findById(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=await this.columnsApiClient.getColumn(r.id,t);return H(s),s}catch(r){return{error:{code:"FIND_COLUMN_BY_ID_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async update(e,t,r){try{const s=await this.getTableInfo(e);if(!s)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const i=await this.columnsApiClient.updateColumnByName(s.id,t,r);return H(i),i}catch(s){return{error:{code:"UPDATE_COLUMN_ERROR",message:s instanceof Error?s.message:"Unknown error occurred"}}}}async delete(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=await this.columnsApiClient.deleteColumnByName(r.id,t);return H(s)?s:{data:{success:!0,message:"Column deleted successfully"}}}catch(r){return{error:{code:"DELETE_COLUMN_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async getTableInfo(e){try{const t=new F(this.client),r=await t.findByName(e);return r.data?{id:r.data.id,snapshot_url:r.data.snapshot_url}:null}catch(t){return console.error("Error getting table info:",t),null}}async getTableId(e){const t=await this.getTableInfo(e);return(null==t?void 0:t.id)||null}}const W={path:"/tables/indexes/{table_id}",method:"POST",authenticated:!0},Q={path:"/tables/indexes/{table_id}/list",method:"POST",authenticated:!0},z={path:"/tables/indexes/{table_id}",method:"DELETE",authenticated:!0},G=(e,t={})=>{let r=e.path;Object.entries(t).forEach(([e,t])=>{r=r.replace(`{${e}}`,encodeURIComponent(t))});const s=r.match(/\{([^}]+)\}/g);if(s)throw new Error(`Missing path parameters: ${s.join(", ")}`);return r};class V{constructor(e,t={}){this.config={apiKey:e,...t},this.httpAdapter=d();const r=t.environment||"prod",s=t.region||"asia-south1";this.baseURL=this.getBaseURL(r,s)}getBaseURL(e,t){const r=c[t];if(!r)throw new Error(`Unsupported region: ${t}`);const s=r[e];if(!s)throw new Error(`Unsupported environment: ${e} for region: ${t}`);return`${s.baseURL}/v1`}async addIndex(e,t){try{const r=W,s=`${this.baseURL}${G(r,{table_id:e})}`;return(await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),data:t,timeout:this.config.timeout})).data}catch(r){return this.formatErrorResponse(r)}}async listIndexes(e,t){try{const r=Q,s=`${this.baseURL}${G(r,{table_id:e})}`;return(await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),data:t,timeout:this.config.timeout})).data}catch(r){return this.formatErrorResponse(r)}}async deleteIndex(e,t){try{const r=z,s=`${this.baseURL}${G(r,{table_id:e})}`;return(await this.httpAdapter.request({url:s,method:r.method,headers:this.buildHeaders(),data:t,timeout:this.config.timeout})).data}catch(r){return this.formatErrorResponse(r)}}buildHeaders(){return{"Content-Type":"application/json",Accept:"application/json","x-boltic-token":this.config.apiKey}}formatErrorResponse(e){var t,r,s;if(this.config.debug&&console.error("Indexes API Error:",e),e&&"object"==typeof e&&"response"in e){const i=e;return(null==(r=null==(t=i.response)?void 0:t.data)?void 0:r.error)?i.response.data:{error:{code:"API_ERROR",message:e.message||"Unknown API error",meta:[`Status: ${(null==(s=i.response)?void 0:s.status)||"unknown"}`]}}}return e&&"object"==typeof e&&"message"in e?{error:{code:"CLIENT_ERROR",message:e.message,meta:["Client-side error occurred"]}}:{error:{code:"UNKNOWN_ERROR",message:"An unexpected error occurred",meta:["Unknown error type"]}}}}class J{constructor(e){this.client=e;const t=e.getConfig();this.apiClient=new V(t.apiKey,{environment:t.environment,region:t.region,timeout:t.timeout,debug:t.debug,retryAttempts:t.retryAttempts,retryDelay:t.retryDelay,headers:t.headers}),this.tableResource=new F(e)}async resolveTableId(e){const t=await this.tableResource.findByName(e);if(!t.data)throw new Error(`Table not found: ${e}`);return t.data.id}async addIndex(e,t){try{const r=await this.resolveTableId(e);return await this.apiClient.addIndex(r,t)}catch(r){return{error:{code:"CLIENT_ERROR",message:(null==r?void 0:r.message)||"Failed to add index",meta:["IndexResource.addIndex"]}}}}async listIndexes(e,t){try{const r=await this.resolveTableId(e);return await this.apiClient.listIndexes(r,t)}catch(r){return{error:{code:"CLIENT_ERROR",message:(null==r?void 0:r.message)||"Failed to list indexes",meta:["IndexResource.listIndexes"]}}}}async deleteIndex(e,t){try{const r=await this.resolveTableId(e),s={index_name:t};return await this.apiClient.deleteIndex(r,s)}catch(r){return{error:{code:"CLIENT_ERROR",message:(null==r?void 0:r.message)||"Failed to delete index",meta:["IndexResource.deleteIndex"]}}}}}const Z={path:"/tables/{table_id}/records",method:"POST",authenticated:!0},X={path:"/tables/{table_id}/records/bulk-insert",method:"POST",authenticated:!0},ee={path:"/tables/{table_id}/records/list",method:"POST",authenticated:!0,rateLimit:{requests:200,window:6e4}},te={path:"/tables/{table_id}/records/{record_id}",method:"GET",authenticated:!0,rateLimit:{requests:200,window:6e4}},re={path:"/tables/{table_id}/records",method:"PATCH",authenticated:!0},se={path:"/tables/{table_id}/records/{record_id}",method:"PATCH",authenticated:!0},ie={path:"/tables/{table_id}/records/list",method:"DELETE",authenticated:!0},ne=(e,t={})=>{let r=e.path;Object.entries(t).forEach(([e,t])=>{r=r.replace(`{${e}}`,encodeURIComponent(t))});const s=r.match(/\{([^}]+)\}/g);if(s)throw new Error(`Missing path parameters: ${s.join(", ")}`);return r};class oe{constructor(e,t={}){this.config={apiKey:e,...t},this.httpAdapter=d();const r=t.environment||"prod",s=t.region||"asia-south1";this.baseURL=this.getBaseURL(r,s)}getBaseURL(e,t){const r=c[t];if(!r)throw new Error(`Unsupported region: ${t}`);const s=r[e];if(!s)throw new Error(`Unsupported environment: ${e} for region: ${t}`);return`${s.baseURL}/v1`}async insertRecord(e){try{const{table_id:t,fields:r,...s}=e;if(!t)return this.formatErrorResponse(new Error("table_id is required for insert operation"));const i=Z,n=`${this.baseURL}${ne(i,{table_id:t})}`,o=(await this.httpAdapter.request({url:n,method:i.method,headers:this.buildHeaders(),data:s,timeout:this.config.timeout})).data;return r&&o.data&&(o.data=p(o.data,r)),o}catch(t){return this.formatErrorResponse(t)}}async insertManyRecords(e,t,r={validation:!0}){try{if(!t)return this.formatErrorResponse(new Error("table_id is required for bulk insert operation"));if(!e||!Array.isArray(e)||0===e.length)return this.formatErrorResponse(new Error("records array is required and cannot be empty"));const s=X;let i=`${this.baseURL}${ne(s,{table_id:t})}`;const n=new URLSearchParams;void 0!==r.validation&&n.append("validation",r.validation.toString()),n.toString()&&(i+=`?${n.toString()}`);return(await this.httpAdapter.request({url:i,method:s.method,headers:this.buildHeaders(),data:e,timeout:this.config.timeout})).data}catch(s){return this.formatErrorResponse(s)}}async getRecord(e,t,r={}){try{if(!t)return this.formatErrorResponse(new Error("table_id is required for get operation"));const s=te,i=`${this.baseURL}${ne(s,{table_id:t,record_id:e})}`,n=(await this.httpAdapter.request({url:i,method:s.method,headers:this.buildHeaders(),timeout:this.config.timeout})).data;return r.fields&&n.data&&(n.data=p(n.data,r.fields)),n}catch(s){return this.formatErrorResponse(s)}}async listRecords(e={}){try{const{table_id:t,...r}=e;if(!t)return this.formatErrorResponse(new Error("table_id is required for list operation"));const s=ee,i=`${this.baseURL}${ne(s,{table_id:t})}`,n=(await this.httpAdapter.request({url:i,method:s.method,headers:this.buildHeaders(),data:r,timeout:this.config.timeout})).data;return r.fields&&n.data&&(n.data=f(n.data,r.fields)),n}catch(t){return this.formatErrorResponse(t)}}async updateRecords(e){try{const{table_id:t,...r}=e;if(!t)return this.formatErrorResponse(new Error("table_id is required for update operation"));const s=re,i=`${this.baseURL}${ne(s,{table_id:t})}`,n=(await this.httpAdapter.request({url:i,method:s.method,headers:this.buildHeaders(),data:r,timeout:this.config.timeout})).data;return r.fields&&n.data&&(n.data=f(n.data,r.fields)),n}catch(t){return this.formatErrorResponse(t)}}async updateRecordById(e,t){try{const{table_id:r,...s}=t;if(!r)return this.formatErrorResponse(new Error("table_id is required for updateById operation"));const i=se,n=`${this.baseURL}${ne(i,{record_id:e,table_id:r})}`,o=(await this.httpAdapter.request({url:n,method:i.method,headers:this.buildHeaders(),data:s.set,timeout:this.config.timeout})).data;return s.fields&&o.data&&(o.data=p(o.data,s.fields)),o}catch(r){return this.formatErrorResponse(r)}}async deleteRecords(e){try{const{table_id:t}=e;if(!t)return this.formatErrorResponse(new Error("table_id is required for delete operation"));const r=function(e){const t={};return e.record_ids&&e.record_ids.length>0&&(t.record_ids=e.record_ids),e.filters&&(Array.isArray(e.filters)?(e.filters.length>0&&"object"==typeof e.filters[0]&&"field"in e.filters[0]&&"operator"in e.filters[0]&&"values"in e.filters[0]||console.warn("Legacy Record<string, unknown>[] filter format detected. Please migrate to the new filter format."),t.filters=e.filters):t.filters=k(e.filters)),t}(e),s=ie,i=`${this.baseURL}${ne(s,{table_id:t})}`;return(await this.httpAdapter.request({url:i,method:s.method,headers:this.buildHeaders(),data:r,timeout:this.config.timeout})).data}catch(t){return this.formatErrorResponse(t)}}async deleteRecordById(e,t){return this.deleteRecords({record_ids:[e],table_id:t.table_id})}buildHeaders(){return{"Content-Type":"application/json",Accept:"application/json","x-boltic-token":this.config.apiKey}}formatErrorResponse(e){var t,r,s;if(this.config.debug&&console.error("Records API Error:",e),e&&"object"==typeof e&&"response"in e){const i=e;return(null==(r=null==(t=i.response)?void 0:t.data)?void 0:r.error)?i.response.data:{error:{code:"API_ERROR",message:e.message||"Unknown API error",meta:[`Status: ${(null==(s=i.response)?void 0:s.status)||"unknown"}`]}}}return e&&"object"==typeof e&&"message"in e?{error:{code:"CLIENT_ERROR",message:e.message,meta:["Client-side error occurred"]}}:{error:{code:"UNKNOWN_ERROR",message:"An unexpected error occurred",meta:["Unknown error type"]}}}}class ae{constructor(e){this.client=e,this.apiClient=new oe(e.getConfig().apiKey,{environment:e.getConfig().environment,region:e.getConfig().region,timeout:e.getConfig().timeout,debug:e.getConfig().debug}),this.tablesApiClient=new B(e.getConfig().apiKey,{environment:e.getConfig().environment,region:e.getConfig().region,timeout:e.getConfig().timeout,debug:e.getConfig().debug})}async insert(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=await this.ensureCompleteRecordData(e,t);if("error"in s&&s.error)return s;const i={...s,table_id:r.id},n=await this.apiClient.insertRecord(i);return H(n),n}catch(r){return{error:{code:"INSERT_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async insertMany(e,t,r={validation:!0}){try{if(!t||!Array.isArray(t)||0===t.length)return{error:{code:"INVALID_INPUT",message:"Records array is required and cannot be empty"}};const s=await this.getTableInfo(e);if(!s)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const i=await this.apiClient.insertManyRecords(t,s.id,r);return H(i),i}catch(s){return{error:{code:"INSERT_MANY_ERROR",message:s instanceof Error?s.message:"Unknown error occurred"}}}}async get(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=await this.apiClient.getRecord(t,r.id);return H(s),s}catch(r){return{error:{code:"GET_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async list(e,t={}){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s={...t,table_id:r.id},i=await this.apiClient.listRecords(s);return H(i),i}catch(r){return{error:{code:"LIST_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async update(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s={...t,table_id:r.id},i=await this.apiClient.updateRecords(s);return H(i),i}catch(r){return{error:{code:"UPDATE_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async updateById(e,t,r){try{const s=await this.getTableInfo(e);if(!s)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const i={id:t,set:r,table_id:s.id},n=await this.apiClient.updateRecordById(t,i);return H(n),n}catch(s){return{error:{code:"UPDATE_BY_ID_ERROR",message:s instanceof Error?s.message:"Unknown error occurred"}}}}async delete(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s={...t,table_id:r.id},i=await this.apiClient.deleteRecords(s);return H(i),i}catch(r){return{error:{code:"DELETE_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async deleteById(e,t){try{const r=await this.getTableInfo(e);if(!r)return{error:{code:"TABLE_NOT_FOUND",message:`Table '${e}' not found`}};const s=await this.apiClient.deleteRecordById(t,{table_id:r.id});return H(s),s}catch(r){return{error:{code:"DELETE_BY_ID_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}async getTableInfo(e){try{const t=new F(this.client),r=await t.findByName(e);return r.data?{id:r.data.id,snapshot_url:r.data.snapshot_url}:null}catch(t){return console.error("Error getting table info:",t),null}}async ensureCompleteRecordData(e,t){try{const r=new K(this.client),s=await r.findAll(e);if(H(s))return s;const i=Array.isArray(s.data)?s.data:[],n={...t};for(const e of i)"id"!==e.name&&"created_at"!==e.name&&"updated_at"!==e.name&&(e.name in t||(n[e.name]=null));return n}catch(r){return{error:{code:"COMPLETE_DATA_ERROR",message:r instanceof Error?r.message:"Unknown error occurred"}}}}}class de{constructor(e){this.queryOptions={},this.updateData={},this.tableName=e.tableName,this.recordResource=e.recordResource}where(e){return this.queryOptions.filters||(this.queryOptions.filters=[]),Object.entries(e).forEach(([e,t])=>{this.queryOptions.filters.push({field:e,operator:"equals",values:[t]})}),this}orderBy(e,t="asc"){return this.queryOptions.sort||(this.queryOptions.sort=[]),this.queryOptions.sort.push({field:e,order:t}),this}limit(e){return this.queryOptions.page?this.queryOptions.page.page_size=e:this.queryOptions.page={page_no:1,page_size:e},this}offset(e){if(this.queryOptions.page){const t=this.queryOptions.page.page_size||50;this.queryOptions.page.page_no=Math.floor(e/t)+1}else this.queryOptions.page={page_no:Math.floor(e/50)+1,page_size:50};return this}select(e){return this.queryOptions.fields=e,this}set(e){return this.updateData={...this.updateData,...e},this}page(e,t=50){return this.queryOptions.page={page_no:e,page_size:t},this}async list(){return this.recordResource.list(this.tableName,this.queryOptions)}async findAll(){return this.recordResource.list(this.tableName,this.queryOptions)}async findOne(){const e={...this.queryOptions,limit:1},t=await this.recordResource.list(this.tableName,e);if("error"in t)return t;const r=t.data.length>0?t.data[0]:null;return{data:r,message:r?"Record found":"No record found"}}buildWhereConditions(){const e={};return this.queryOptions.filters&&this.queryOptions.filters.forEach(t=>{if("field"in t&&"values"in t){const r=t,s=String(r.field);"equals"===r.operator?e[s]=r.values[0]:"contains"===r.operator?e[s]={$like:`%${String(r.values[0])}%`}:e[s]=r.values[0]}else Object.assign(e,t)}),e}async update(){if(!this.updateData)return{error:{code:"MISSING_UPDATE_DATA",message:"Update data is required for update operation"}};const e={set:this.updateData,filters:this.queryOptions.filters||[]};return this.recordResource.update(this.tableName,e)}async updateById(e){return this.recordResource.updateById(this.tableName,e,this.updateData)}async deleteById(e){return this.recordResource.deleteById(this.tableName,e)}async deleteByIds(e){return this.recordResource.delete(this.tableName,{record_ids:e})}async delete(){if(!this.queryOptions.filters||0===this.queryOptions.filters.length)return{error:{code:"MISSING_DELETE_CONDITIONS",message:"Filter conditions are required for delete operation. Use where() to specify conditions."}};const e={filters:this.buildWhereConditions()};return this.recordResource.delete(this.tableName,e)}getQueryOptions(){return{...this.queryOptions}}getUpdateData(){return{...this.updateData}}async insert(e){return this.recordResource.insert(this.tableName,e)}}function le(e){return new de(e)}const ue={path:"/tables/query/text-to-sql",method:"POST",authenticated:!0,rateLimit:{requests:100,window:6e4}},ce={path:"/tables/query/execute",method:"POST",authenticated:!0,rateLimit:{requests:200,window:6e4}},he=(e,t={})=>{let r=e.path;return Object.entries(t).forEach(([e,t])=>{r=r.replace(`{${e}}`,encodeURIComponent(t))}),r};class me{constructor(e,t={}){this.config={apiKey:e,...t},this.httpAdapter=d();const r=t.environment||"prod",s=t.region||"asia-south1";this.baseURL=this.getBaseURL(r,s)}getBaseURL(e,t){const r=c[t];if(!r)throw new Error(`Unsupported region: ${t}`);const s=r[e];if(!s)throw new Error(`Unsupported environment: ${e} for region: ${t}`);return`${s.baseURL}/v1`}buildHeaders(){return{"Content-Type":"application/json",Accept:"application/json","x-boltic-token":this.config.apiKey,...this.config.headers}}formatErrorResponse(e,t="API"){var r,s,i;if(this.config.debug&&console.error(`${t} Error:`,e),e&&"object"==typeof e&&"response"in e){const n=e;return(null==(s=null==(r=n.response)?void 0:r.data)?void 0:s.error)?n.response.data:{error:{code:`${t}_ERROR`,message:e.message||`Unknown ${t} error`,meta:[`Status: ${(null==(i=n.response)?void 0:i.status)||"unknown"}`]}}}return e&&"object"==typeof e&&"message"in e?{error:{code:`${t}_CLIENT_ERROR`,message:e.message,meta:[`${t} client-side error occurred`]}}:{error:{code:`${t}_UNKNOWN_ERROR`,message:`An unexpected ${t} error occurred`,meta:[`Unknown ${t} error type`]}}}toString(){return`${this.constructor.name} { environment: "${this.config.environment||"prod"}", debug: ${this.config.debug||!1} }`}toJSON(){const e={...this.config};return delete e.apiKey,{client:this.constructor.name,config:e}}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}class pe extends me{constructor(e,t={}){super(e,t)}async textToSQL(e){try{const t=ue,r=`${this.baseURL}${he(t)}`,s=await this.httpAdapter.request({url:r,method:t.method,headers:this.buildHeaders(),data:e,timeout:this.config.timeout});if(s.status>=400)return this.formatErrorResponse({response:{data:s.data,status:s.status}},"SQL");const i=s.data;return this.createAsyncIterable(i.data)}catch(t){return this.formatErrorResponse(t,"SQL")}}async executeSQL(e){try{const t=ce,r=`${this.baseURL}${he(t)}`,s=await this.httpAdapter.request({url:r,method:t.method,headers:this.buildHeaders(),data:e,timeout:this.config.timeout});return s.status>=400?this.formatErrorResponse({response:{data:s.data,status:s.status}},"SQL"):s.data}catch(t){return this.formatErrorResponse(t,"SQL")}}async*createAsyncIterable(e){yield e}}class fe{constructor(e){const t=e.getConfig();this.sqlApiClient=new pe(t.apiKey,{environment:t.environment,region:t.region,timeout:t.timeout,debug:t.debug,retryAttempts:t.retryAttempts,retryDelay:t.retryDelay,headers:t.headers})}async textToSQL(e,t={}){const r=function(e,t={}){return{prompt:e,current_query:t.currentQuery}}(e,t),s=await this.sqlApiClient.textToSQL(r);if("error"in s&&void 0!==s.error)throw s;return s}async executeSQL(e){const t=await this.sqlApiClient.executeSQL({query:e});return H(t),t}}class ge{constructor(e,t){this.isPublic=!1,this.fields=[],this.tableName=e.name,this.description=e.description,this.tablesApiClient=t}name(e){return this.tableName=e,this}describe(e){return this.description=e,this}public(e=!0){return this.isPublic=e,this}text(e,t={}){return this.fields.push({name:e,type:"text",is_nullable:t.nullable??!0,is_unique:t.unique??!1,is_indexed:t.indexed??!1,is_primary_key:!1,default_value:t.defaultValue,description:t.description,alignment:t.alignment||"left",field_order:this.fields.length+1}),this}longText(e,t={}){return this.fields.push({name:e,type:"long-text",is_nullable:t.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,description:t.description,alignment:t.alignment||"left",field_order:this.fields.length+1}),this}number(e,t={}){return this.fields.push({name:e,type:"number",is_nullable:t.nullable??!0,is_unique:t.unique??!1,is_indexed:t.indexed??!1,is_primary_key:!1,default_value:t.defaultValue,description:t.description,decimals:t.decimals,alignment:t.alignment||"right",field_order:this.fields.length+1}),this}currency(e,t={}){return this.fields.push({name:e,type:"currency",is_nullable:t.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,default_value:t.defaultValue,description:t.description,currency_format:t.currencyFormat,decimals:t.decimals,alignment:"right",field_order:this.fields.length+1}),this}checkbox(e,t={}){return this.fields.push({name:e,type:"checkbox",is_nullable:t.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,default_value:t.defaultValue,description:t.description,alignment:"center",field_order:this.fields.length+1}),this}dropdown(e,t,r={}){return this.fields.push({name:e,type:"dropdown",is_nullable:r.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,default_value:r.defaultValue,description:r.description,selection_source:"provide-static-list",selectable_items:t,multiple_selections:r.multiple??!1,alignment:"left",field_order:this.fields.length+1}),this}email(e,t={}){return this.fields.push({name:e,type:"email",is_nullable:t.nullable??!0,is_unique:t.unique??!1,is_indexed:t.indexed??!1,is_primary_key:!1,description:t.description,alignment:"left",field_order:this.fields.length+1}),this}phone(e,t={}){return this.fields.push({name:e,type:"phone-number",is_nullable:t.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,description:t.description,phone_format:t.format,alignment:"left",field_order:this.fields.length+1}),this}link(e,t={}){return this.fields.push({name:e,type:"link",is_nullable:t.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,description:t.description,alignment:"left",field_order:this.fields.length+1}),this}json(e,t={}){return this.fields.push({name:e,type:"json",is_nullable:t.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,description:t.description,alignment:"left",field_order:this.fields.length+1}),this}dateTime(e,t={}){return this.fields.push({name:e,type:"date-time",is_nullable:t.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,description:t.description,date_format:t.dateFormat,time_format:t.timeFormat,timezone:t.timezone,alignment:"left",field_order:this.fields.length+1}),this}vector(e,t,r={}){return this.fields.push({name:e,type:"vector",is_nullable:r.nullable??!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,description:r.description,vector_dimension:t,alignment:"left",field_order:this.fields.length+1}),this}addField(e){return this.fields.push({...e,field_order:e.field_order||this.fields.length+1}),this}removeField(e){return this.fields=this.fields.filter(t=>t.name!==e),this.fields.forEach((e,t)=>{e.field_order=t+1}),this}getFields(){return[...this.fields]}getName(){return this.tableName}getDescription(){return this.description}build(){if(!this.tableName)throw new e("Table name is required",[{field:"name",message:"Table name cannot be empty"}]);if(0===this.fields.length)throw new e("At least one field is required",[{field:"fields",message:"Table must have at least one field"}]);return{name:this.tableName,description:this.description,fields:this.fields}}async create(e={}){if(!this.tablesApiClient)throw new Error("TablesApiClient is required for table creation");const t=this.build();return this.tablesApiClient.createTable(t,e)}}function _e(e,t){return new ge(e,t)}class be{constructor(e,t={}){this.currentDatabase=null,this.clientOptions=t,this.configManager=new m(e,t.environment||"prod",t.region||"asia-south1",t);const r=this.configManager.getConfig();this.authManager=new n({apiKey:r.apiKey,maxRetries:r.maxRetries}),this.baseClient=new u(r,this.authManager),this.tableResource=new F(this.baseClient),this.columnResource=new K(this.baseClient),this.recordResource=new ae(this.baseClient),this.sqlResource=new fe(this.baseClient),this.indexResource=new J(this.baseClient),this.currentDatabase={databaseName:"Default"}}getCurrentDatabase(){return this.currentDatabase}get tables(){return{create:e=>this.tableResource.create(e),findAll:e=>this.tableResource.findAll(e),findById:e=>this.tableResource.findById(e),findByName:e=>this.tableResource.findByName(e),findOne:e=>this.tableResource.findOne(e),update:(e,t)=>this.tableResource.update(e,t),delete:e=>this.tableResource.delete(e),rename:(e,t)=>this.tableResource.rename(e,t),setAccess:e=>this.tableResource.setAccess(e)}}get columns(){return{create:(e,t)=>this.columnResource.create(e,t),createMany:(e,t)=>this.columnResource.createMany(e,t),findAll:(e,t)=>this.columnResource.findAll(e,t),findOne:(e,t)=>this.columnResource.get(e,t),findById:(e,t)=>this.columnResource.findById(e,t),update:(e,t,r)=>this.columnResource.update(e,t,r),delete:(e,t)=>this.columnResource.delete(e,t)}}get indexes(){return{addIndex:(e,t)=>this.indexResource.addIndex(e,t),listIndexes:(e,t)=>this.indexResource.listIndexes(e,t),deleteIndex:(e,t)=>this.indexResource.deleteIndex(e,t)}}table(e){return _e({name:e})}from(e){return{columns:()=>({create:t=>this.columnResource.create(e,t),findAll:t=>this.columnResource.findAll(e,t),get:t=>this.columnResource.get(e,t),update:(t,r)=>this.columnResource.update(e,t,r),delete:t=>this.columnResource.delete(e,t)}),records:()=>({insert:t=>this.recordResource.insert(e,t),insertMany:(t,r)=>this.recordResource.insertMany(e,t,r),findOne:t=>this.recordResource.get(e,t),update:t=>this.recordResource.update(e,t),updateById:(t,r)=>this.recordResource.updateById(e,t,r),delete:t=>this.recordResource.delete(e,t),deleteById:t=>this.recordResource.deleteById(e,t)}),record:()=>le({tableName:e,recordResource:this.recordResource}),indexes:()=>({addIndex:t=>this.indexResource.addIndex(e,t),listIndexes:t=>this.indexResource.listIndexes(e,t),deleteIndex:t=>this.indexResource.deleteIndex(e,t)})}}get records(){return{insert:(e,t)=>this.recordResource.insert(e,t),insertMany:(e,t,r)=>this.recordResource.insertMany(e,t,r),findAll:(e,t)=>this.recordResource.list(e,t),findOne:(e,t)=>this.recordResource.get(e,t),update:(e,t)=>this.recordResource.update(e,t),updateById:(e,t,r)=>this.recordResource.updateById(e,t,r),delete:(e,t)=>this.recordResource.delete(e,t),deleteById:(e,t)=>this.recordResource.deleteById(e,t)}}record(e){return le({tableName:e,recordResource:this.recordResource})}get sql(){return{textToSQL:(e,t)=>this.sqlResource.textToSQL(e,t),executeSQL:e=>this.sqlResource.executeSQL(e)}}getSqlResource(){return this.sqlResource}updateApiKey(e){this.configManager.updateConfig({apiKey:e}),this.authManager.updateApiKey(e)}updateConfig(e){this.configManager.updateConfig(e),this.baseClient.updateConfig(this.configManager.getConfig()),this.updateAllResourcesConfig()}getConfig(){return this.configManager.getConfig()}async validateApiKey(){return this.authManager.validateApiKeyAsync()}isAuthenticated(){return this.authManager.isAuthenticated()}getHttpClient(){return this.baseClient}addRequestInterceptor(e){return this.baseClient.getInterceptors().request.use(e)}addResponseInterceptor(e,t){return this.baseClient.getInterceptors().response.use(e,t)}ejectRequestInterceptor(e){this.baseClient.getInterceptors().request.eject(e)}ejectResponseInterceptor(e){this.baseClient.getInterceptors().response.eject(e)}async testConnection(){try{return await this.authManager.validateApiKeyAsync()}catch(e){return!1}}getVersion(){return"1.0.0"}getEnvironment(){return this.configManager.getConfig().environment}getRegion(){return this.configManager.getConfig().region}enableDebug(){this.configManager.updateConfig({debug:!0}),this.baseClient.updateConfig(this.configManager.getConfig()),this.updateAllResourcesConfig()}disableDebug(){this.configManager.updateConfig({debug:!1}),this.baseClient.updateConfig(this.configManager.getConfig()),this.updateAllResourcesConfig()}isDebugEnabled(){return this.configManager.getConfig().debug||!1}updateAllResourcesConfig(){this.tableResource=new F(this.baseClient),this.columnResource=new K(this.baseClient),this.recordResource=new ae(this.baseClient),this.sqlResource=new fe(this.baseClient),this.indexResource=new J(this.baseClient)}toString(){const e=this.getConfig();return`BolticClient { environment: "${e.environment}", region: "${e.region}", debug: ${e.debug} }`}toJSON(){const e=this.getConfig();return{environment:e.environment,region:e.region,debug:e.debug,timeout:e.timeout,version:this.getVersion()}}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}exports.ApiError=t,exports.BolticClient=be,exports.ENV_CONFIGS=h,exports.FILTER_OPERATORS=q,exports.FilterBuilder=M,exports.REGION_CONFIGS=c,exports.SqlResource=fe,exports.ValidationError=e,exports.buildApiFilters=function(e,t="AND"){const r=D(e);return r.forEach((e,t)=>{if(!e.field)throw new Error(`Filter at index ${t} missing required field`);if(!e.operator)throw new Error(`Filter at index ${t} missing required operator`);if(!Array.isArray(e.values))throw new Error(`Filter at index ${t} values must be an array`)}),{filters:r,whereOperator:t}},exports.createErrorResponse=function(e,t){return{error:e,details:t}},exports.createErrorWithContext=r,exports.createFilter=function(){return new M},exports.createMockResponse=function(e,t){return{data:e,pagination:t}},exports.createRecordBuilder=le,exports.createTableBuilder=_e,exports.createTestClient=function(e={}){return new be(e.apiKey||"test-api-key-12345",{environment:"local",region:"asia-south1",debug:e.debug??!0,timeout:3e4,...e})},exports.formatError=i,exports.getHttpStatusCode=s,exports.isErrorResponse=H,exports.isListResponse=j,exports.isNetworkError=function(e){return e instanceof Error&&(e.message.includes("network")||e.message.includes("fetch")||e.message.includes("timeout")||"AbortError"===e.name)},exports.mapFiltersToWhere=function(e){const t={};return e.forEach(e=>{const r={};Object.entries(S).forEach(([e,t])=>{r[t]=e});const s=r[e.operator];if(!s)throw new Error(`Unsupported API operator: ${e.operator}`);t[e.field]||(t[e.field]={});const i=t[e.field];"$between"===s&&2===e.values.length?i[s]=e.values:i[s]="$in"===s||"$notIn"===s||"$isOneOfArray"===s?e.values:"$isNull"===s||"$isNotNull"===s||"$isEmpty"===s||e.values[0]}),t},exports.mapWhereToFilters=k,exports.normalizeFilters=D;
|
|
2
|
+
//# sourceMappingURL=test-client-DfOmma3t.js.map
|