@m4rctr3y/reutjs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../src/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAoB;IAEnC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI;IAqB5F;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAI1D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAI7D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAIhD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnC;;OAEG;IACH,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAQlC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAMhE;;OAEG;IACH,UAAU,IAAI,YAAY;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Query builder for constructing complex queries
3
+ */
4
+ export class QueryBuilder {
5
+ constructor() {
6
+ this.options = {};
7
+ }
8
+ /**
9
+ * Select specific columns
10
+ */
11
+ select(columns) {
12
+ this.options.select = columns;
13
+ return this;
14
+ }
15
+ /**
16
+ * Add a where condition
17
+ * @param column Column name or relationship path (e.g., 'user.name')
18
+ * @param operatorOrValue Operator (if three params) or value (if two params)
19
+ * @param value Value (if operator provided)
20
+ */
21
+ where(column, operatorOrValue, value) {
22
+ if (!this.options.where) {
23
+ this.options.where = {};
24
+ }
25
+ if (value !== undefined) {
26
+ // Three-parameter version: where(column, operator, value)
27
+ const operator = operatorOrValue;
28
+ if (!this.options.where[column]) {
29
+ this.options.where[column] = {};
30
+ }
31
+ const whereValue = this.options.where[column];
32
+ whereValue[operator] = value;
33
+ }
34
+ else {
35
+ // Two-parameter version: where(column, value) - defaults to eq
36
+ this.options.where[column] = operatorOrValue;
37
+ }
38
+ return this;
39
+ }
40
+ /**
41
+ * Add multiple where conditions
42
+ */
43
+ whereIn(column, values) {
44
+ return this.where(column, 'in', values);
45
+ }
46
+ /**
47
+ * Add a 'not in' condition
48
+ */
49
+ whereNotIn(column, values) {
50
+ return this.where(column, 'nin', values);
51
+ }
52
+ /**
53
+ * Add a 'like' condition (contains)
54
+ */
55
+ whereLike(column, value) {
56
+ return this.where(column, 'like', value);
57
+ }
58
+ /**
59
+ * Add a 'greater than' condition
60
+ */
61
+ whereGt(column, value) {
62
+ return this.where(column, 'gt', value);
63
+ }
64
+ /**
65
+ * Add a 'greater than or equal' condition
66
+ */
67
+ whereGte(column, value) {
68
+ return this.where(column, 'gte', value);
69
+ }
70
+ /**
71
+ * Add a 'less than' condition
72
+ */
73
+ whereLt(column, value) {
74
+ return this.where(column, 'lt', value);
75
+ }
76
+ /**
77
+ * Add a 'less than or equal' condition
78
+ */
79
+ whereLte(column, value) {
80
+ return this.where(column, 'lte', value);
81
+ }
82
+ /**
83
+ * Add a 'not equal' condition
84
+ */
85
+ whereNe(column, value) {
86
+ return this.where(column, 'ne', value);
87
+ }
88
+ /**
89
+ * Add an 'is null' condition
90
+ */
91
+ whereIsNull(column) {
92
+ return this.where(column, 'is', null);
93
+ }
94
+ /**
95
+ * Add an 'is not null' condition
96
+ */
97
+ whereIsNotNull(column) {
98
+ return this.where(column, 'isn', null);
99
+ }
100
+ /**
101
+ * Eager load relationships
102
+ */
103
+ with(relationships) {
104
+ this.options.with = relationships;
105
+ return this;
106
+ }
107
+ /**
108
+ * Add a manual join
109
+ */
110
+ join(joinConfig) {
111
+ if (!this.options.joins) {
112
+ this.options.joins = [];
113
+ }
114
+ this.options.joins.push(joinConfig);
115
+ return this;
116
+ }
117
+ /**
118
+ * Set page number for pagination
119
+ */
120
+ page(page) {
121
+ this.options.page = page;
122
+ return this;
123
+ }
124
+ /**
125
+ * Set limit for pagination
126
+ */
127
+ limit(limit) {
128
+ this.options.limit = limit;
129
+ return this;
130
+ }
131
+ /**
132
+ * Set offset for pagination
133
+ */
134
+ offset(offset) {
135
+ this.options.offset = offset;
136
+ return this;
137
+ }
138
+ /**
139
+ * Order by column
140
+ */
141
+ orderBy(column, direction = 'asc') {
142
+ this.options.orderBy = column;
143
+ this.options.order = direction;
144
+ return this;
145
+ }
146
+ /**
147
+ * Get the built query options
148
+ */
149
+ getOptions() {
150
+ return { ...this.options };
151
+ }
152
+ /**
153
+ * Reset the query builder
154
+ */
155
+ reset() {
156
+ this.options = {};
157
+ return this;
158
+ }
159
+ }
160
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../src/query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type AxiosInstance } from 'axios';
2
+ import { QueryBuilder } from './query-builder.js';
3
+ import type { QueryOptions, PaginatedResponse, SingleResponse, WhereOperator, WhereValue } from './types.js';
4
+ /**
5
+ * Table class representing a database table
6
+ */
7
+ export declare class Table<T = any> {
8
+ private axiosInstance;
9
+ private tableName;
10
+ private queryBuilder;
11
+ constructor(axiosInstance: AxiosInstance, tableName: string);
12
+ /**
13
+ * Get query builder for chaining query methods
14
+ */
15
+ select(columns: string[]): this;
16
+ where(column: string, operatorOrValue: WhereOperator | WhereValue, value?: WhereValue): this;
17
+ whereIn(column: string, values: (string | number)[]): this;
18
+ whereNotIn(column: string, values: (string | number)[]): this;
19
+ whereLike(column: string, value: string): this;
20
+ whereGt(column: string, value: number): this;
21
+ whereGte(column: string, value: number): this;
22
+ whereLt(column: string, value: number): this;
23
+ whereLte(column: string, value: number): this;
24
+ whereNe(column: string, value: WhereValue): this;
25
+ whereIsNull(column: string): this;
26
+ whereIsNotNull(column: string): this;
27
+ with(relationships: string[]): this;
28
+ join(joinConfig: Parameters<QueryBuilder['join']>[0]): this;
29
+ page(page: number): this;
30
+ limit(limit: number): this;
31
+ offset(offset: number): this;
32
+ orderBy(column: string, direction?: 'asc' | 'desc'): this;
33
+ /**
34
+ * Get all records with optional query builder options
35
+ */
36
+ all(options?: QueryOptions): Promise<PaginatedResponse<T>>;
37
+ /**
38
+ * Find a single record by ID
39
+ */
40
+ find(id: string | number, options?: {
41
+ with?: string[];
42
+ }): Promise<SingleResponse<T>>;
43
+ /**
44
+ * Create a new record
45
+ */
46
+ add(data: Partial<T>): Promise<SingleResponse<T>>;
47
+ /**
48
+ * Update a record by ID
49
+ */
50
+ update(id: string | number, data: Partial<T>): Promise<SingleResponse<T>>;
51
+ /**
52
+ * Delete a record by ID
53
+ */
54
+ delete(id: string | number): Promise<void>;
55
+ }
56
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7G;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC,GAAG,GAAG;IACxB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAe;gBAEvB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;IAM3D;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI;IAK5F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAK1D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAK7D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAKhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKjC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKpC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAK3D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAKhE;;OAEG;IACG,GAAG,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAwBhE;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAyB1F;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAqDvD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAoC/E;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjD"}
package/dist/table.js ADDED
@@ -0,0 +1,234 @@
1
+ import axios from 'axios';
2
+ import { QueryBuilder } from './query-builder.js';
3
+ import { buildQueryString, parseResponse, isErrorResponse, extractErrorMessage } from './utils.js';
4
+ /**
5
+ * Table class representing a database table
6
+ */
7
+ export class Table {
8
+ constructor(axiosInstance, tableName) {
9
+ this.axiosInstance = axiosInstance;
10
+ this.tableName = tableName;
11
+ this.queryBuilder = new QueryBuilder();
12
+ }
13
+ /**
14
+ * Get query builder for chaining query methods
15
+ */
16
+ select(columns) {
17
+ this.queryBuilder.select(columns);
18
+ return this;
19
+ }
20
+ where(column, operatorOrValue, value) {
21
+ this.queryBuilder.where(column, operatorOrValue, value);
22
+ return this;
23
+ }
24
+ whereIn(column, values) {
25
+ this.queryBuilder.whereIn(column, values);
26
+ return this;
27
+ }
28
+ whereNotIn(column, values) {
29
+ this.queryBuilder.whereNotIn(column, values);
30
+ return this;
31
+ }
32
+ whereLike(column, value) {
33
+ this.queryBuilder.whereLike(column, value);
34
+ return this;
35
+ }
36
+ whereGt(column, value) {
37
+ this.queryBuilder.whereGt(column, value);
38
+ return this;
39
+ }
40
+ whereGte(column, value) {
41
+ this.queryBuilder.whereGte(column, value);
42
+ return this;
43
+ }
44
+ whereLt(column, value) {
45
+ this.queryBuilder.whereLt(column, value);
46
+ return this;
47
+ }
48
+ whereLte(column, value) {
49
+ this.queryBuilder.whereLte(column, value);
50
+ return this;
51
+ }
52
+ whereNe(column, value) {
53
+ this.queryBuilder.whereNe(column, value);
54
+ return this;
55
+ }
56
+ whereIsNull(column) {
57
+ this.queryBuilder.whereIsNull(column);
58
+ return this;
59
+ }
60
+ whereIsNotNull(column) {
61
+ this.queryBuilder.whereIsNotNull(column);
62
+ return this;
63
+ }
64
+ with(relationships) {
65
+ this.queryBuilder.with(relationships);
66
+ return this;
67
+ }
68
+ join(joinConfig) {
69
+ this.queryBuilder.join(joinConfig);
70
+ return this;
71
+ }
72
+ page(page) {
73
+ this.queryBuilder.page(page);
74
+ return this;
75
+ }
76
+ limit(limit) {
77
+ this.queryBuilder.limit(limit);
78
+ return this;
79
+ }
80
+ offset(offset) {
81
+ this.queryBuilder.offset(offset);
82
+ return this;
83
+ }
84
+ orderBy(column, direction = 'asc') {
85
+ this.queryBuilder.orderBy(column, direction);
86
+ return this;
87
+ }
88
+ /**
89
+ * Get all records with optional query builder options
90
+ */
91
+ async all(options) {
92
+ const queryOptions = options || this.queryBuilder.getOptions();
93
+ const queryString = buildQueryString(queryOptions);
94
+ try {
95
+ const response = await this.axiosInstance.get(`/${this.tableName}/all${queryString}`);
96
+ if (isErrorResponse(response.data)) {
97
+ throw new Error(extractErrorMessage(response.data));
98
+ }
99
+ return parseResponse(response.data);
100
+ }
101
+ catch (error) {
102
+ if (axios.isAxiosError(error)) {
103
+ throw new Error(error.response?.data?.error || error.message);
104
+ }
105
+ throw error;
106
+ }
107
+ finally {
108
+ this.queryBuilder.reset();
109
+ }
110
+ }
111
+ /**
112
+ * Find a single record by ID
113
+ */
114
+ async find(id, options) {
115
+ const queryOptions = {};
116
+ if (options?.with) {
117
+ queryOptions.with = options.with;
118
+ }
119
+ const queryString = buildQueryString(queryOptions);
120
+ try {
121
+ const response = await this.axiosInstance.get(`/${this.tableName}/find/${id}${queryString}`);
122
+ if (isErrorResponse(response.data)) {
123
+ throw new Error(extractErrorMessage(response.data));
124
+ }
125
+ return parseResponse(response.data);
126
+ }
127
+ catch (error) {
128
+ if (axios.isAxiosError(error)) {
129
+ throw new Error(error.response?.data?.error || error.message);
130
+ }
131
+ throw error;
132
+ }
133
+ }
134
+ /**
135
+ * Create a new record
136
+ */
137
+ async add(data) {
138
+ try {
139
+ const response = await this.axiosInstance.post(`/${this.tableName}/add`, data);
140
+ // Handle status response: { status: true } or { status: false } or { status: "error" }
141
+ if (response.data && typeof response.data === 'object' && 'status' in response.data) {
142
+ if (response.data.status === true) {
143
+ // Success - try to fetch the created record by querying with the data we just inserted
144
+ // This is a workaround since the API doesn't return the created record
145
+ const queryData = { ...data };
146
+ // Remove fields that might not be unique
147
+ const uniqueFields = Object.keys(queryData).filter(key => !['created_at', 'updated_at'].includes(key));
148
+ if (uniqueFields.length > 0) {
149
+ const filterData = {};
150
+ uniqueFields.forEach(key => {
151
+ filterData[key] = queryData[key];
152
+ });
153
+ const results = await this.all({ where: filterData, limit: 1 });
154
+ if (results.results.length > 0) {
155
+ return results.results[0];
156
+ }
157
+ }
158
+ // If we can't find it, return the data we sent (not ideal, but better than nothing)
159
+ return data;
160
+ }
161
+ else if (response.data.status === false) {
162
+ throw new Error('Failed to create record');
163
+ }
164
+ else if (typeof response.data.status === 'string') {
165
+ throw new Error(response.data.status);
166
+ }
167
+ }
168
+ if (isErrorResponse(response.data)) {
169
+ throw new Error(extractErrorMessage(response.data));
170
+ }
171
+ return parseResponse(response.data);
172
+ }
173
+ catch (error) {
174
+ if (axios.isAxiosError(error)) {
175
+ const errorData = error.response?.data;
176
+ if (errorData && typeof errorData === 'object' && 'status' in errorData && typeof errorData.status === 'string') {
177
+ throw new Error(errorData.status);
178
+ }
179
+ throw new Error(errorData?.error || error.message);
180
+ }
181
+ throw error;
182
+ }
183
+ }
184
+ /**
185
+ * Update a record by ID
186
+ */
187
+ async update(id, data) {
188
+ try {
189
+ const response = await this.axiosInstance.put(`/${this.tableName}/update/${id}`, data);
190
+ // Handle status response: { status: true } or { status: false } or { status: "error" }
191
+ if (response.data && typeof response.data === 'object' && 'status' in response.data) {
192
+ if (response.data.status === true) {
193
+ // Success - fetch the updated record
194
+ return await this.find(id);
195
+ }
196
+ else if (response.data.status === false) {
197
+ throw new Error('Failed to update record');
198
+ }
199
+ else if (typeof response.data.status === 'string') {
200
+ throw new Error(response.data.status);
201
+ }
202
+ }
203
+ if (isErrorResponse(response.data)) {
204
+ throw new Error(extractErrorMessage(response.data));
205
+ }
206
+ return parseResponse(response.data);
207
+ }
208
+ catch (error) {
209
+ if (axios.isAxiosError(error)) {
210
+ const errorData = error.response?.data;
211
+ if (errorData && typeof errorData === 'object' && 'status' in errorData && typeof errorData.status === 'string') {
212
+ throw new Error(errorData.status);
213
+ }
214
+ throw new Error(errorData?.error || error.message);
215
+ }
216
+ throw error;
217
+ }
218
+ }
219
+ /**
220
+ * Delete a record by ID
221
+ */
222
+ async delete(id) {
223
+ try {
224
+ await this.axiosInstance.delete(`/${this.tableName}/delete/${id}`);
225
+ }
226
+ catch (error) {
227
+ if (axios.isAxiosError(error)) {
228
+ throw new Error(error.response?.data?.error || error.message);
229
+ }
230
+ throw error;
231
+ }
232
+ }
233
+ }
234
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGnG;;GAEG;AACH,MAAM,OAAO,KAAK;IAKhB,YAAY,aAA4B,EAAE,SAAiB;QACzD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAiB;QACtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,eAA2C,EAAE,KAAkB;QACnF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,MAA2B;QACjD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,MAA2B;QACpD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,KAAa;QACrC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,KAAa;QACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,KAAa;QACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,KAAa;QACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,KAAa;QACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,KAAiB;QACvC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,aAAuB;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,UAA+C;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,YAA4B,KAAK;QACvD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAsB;QAC9B,MAAM,YAAY,GAAG,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAC/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC3C,IAAI,IAAI,CAAC,SAAS,OAAO,WAAW,EAAE,CACvC,CAAC;YAEF,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,aAAa,CAAuB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAmB,EAAE,OAA6B;QAC3D,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACnC,CAAC;QACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC3C,IAAI,IAAI,CAAC,SAAS,SAAS,EAAE,GAAG,WAAW,EAAE,CAC9C,CAAC;YAEF,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,aAAa,CAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAgB;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAC5C,IAAI,IAAI,CAAC,SAAS,MAAM,EACxB,IAAI,CACL,CAAC;YAEF,uFAAuF;YACvF,IAAI,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpF,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClC,uFAAuF;oBACvF,uEAAuE;oBACvE,MAAM,SAAS,GAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;oBACnC,yCAAyC;oBACzC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACvD,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC5C,CAAC;oBACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,MAAM,UAAU,GAAQ,EAAE,CAAC;wBAC3B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;4BACzB,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnC,CAAC,CAAC,CAAC;wBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;wBAChE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAsB,CAAC;wBACjD,CAAC;oBACH,CAAC;oBACD,oFAAoF;oBACpF,OAAO,IAAyB,CAAC;gBACnC,CAAC;qBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,aAAa,CAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;gBACvC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAChH,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAmB,EAAE,IAAgB;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC3C,IAAI,IAAI,CAAC,SAAS,WAAW,EAAE,EAAE,EACjC,IAAI,CACL,CAAC;YAEF,uFAAuF;YACvF,IAAI,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpF,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClC,qCAAqC;oBACrC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC;qBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,aAAa,CAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;gBACvC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAChH,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAmB;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,WAAW,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Configuration for the ReutClient
3
+ */
4
+ export interface ReutClientConfig {
5
+ /** Base URL of the Reut API server */
6
+ url: string;
7
+ /** Optional authentication token */
8
+ token?: string;
9
+ /** Optional axios instance configuration */
10
+ axiosConfig?: import('axios').AxiosRequestConfig;
11
+ }
12
+ /**
13
+ * Join configuration for manual joins
14
+ */
15
+ export interface JoinConfig {
16
+ /** Table name to join */
17
+ table: string;
18
+ /** Local column name */
19
+ localColumn: string;
20
+ /** Reference column name */
21
+ refColumn: string;
22
+ /** Join type: INNER, LEFT, RIGHT, etc. */
23
+ type?: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
24
+ /** Optional alias for the joined table */
25
+ alias?: string;
26
+ }
27
+ /**
28
+ * Where condition operators
29
+ */
30
+ export type WhereOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'in' | 'nin' | 'is' | 'isn';
31
+ /**
32
+ * Where condition value
33
+ */
34
+ export type WhereValue = string | number | boolean | null | (string | number)[];
35
+ /**
36
+ * Where condition structure
37
+ */
38
+ export interface WhereCondition {
39
+ column: string;
40
+ operator?: WhereOperator;
41
+ value?: WhereValue;
42
+ }
43
+ /**
44
+ * Query options for building queries
45
+ */
46
+ export interface QueryOptions {
47
+ /** Columns to select */
48
+ select?: string[];
49
+ /** Where conditions */
50
+ where?: Record<string, WhereValue | Record<WhereOperator, WhereValue>>;
51
+ /** Relationships to eager load */
52
+ with?: string[];
53
+ /** Manual joins */
54
+ joins?: JoinConfig[];
55
+ /** Page number for pagination */
56
+ page?: number;
57
+ /** Limit per page */
58
+ limit?: number;
59
+ /** Offset for pagination */
60
+ offset?: number;
61
+ /** Order by column */
62
+ orderBy?: string;
63
+ /** Order direction */
64
+ order?: 'asc' | 'desc';
65
+ }
66
+ /**
67
+ * Paginated response structure
68
+ */
69
+ export interface PaginatedResponse<T> {
70
+ /** Array of results */
71
+ results: T[];
72
+ /** Total number of pages */
73
+ totalPages: number;
74
+ /** Current page number */
75
+ page: number;
76
+ /** Items per page */
77
+ limit: number;
78
+ /** Total number of items */
79
+ totalItems: number;
80
+ }
81
+ /**
82
+ * Single record response
83
+ */
84
+ export type SingleResponse<T> = T;
85
+ /**
86
+ * Error response structure
87
+ */
88
+ export interface ErrorResponse {
89
+ error: string;
90
+ message?: string;
91
+ code?: number;
92
+ }
93
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,OAAO,EAAE,kBAAkB,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,MAAM,GACN,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IACvE,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mBAAmB;IACnB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,uBAAuB;IACvB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { QueryOptions } from './types.js';
2
+ /**
3
+ * Build query string from query options
4
+ */
5
+ export declare function buildQueryString(options: QueryOptions): string;
6
+ /**
7
+ * Parse response data
8
+ */
9
+ export declare function parseResponse<T>(data: any): T;
10
+ /**
11
+ * Check if response is an error
12
+ */
13
+ export declare function isErrorResponse(data: any): boolean;
14
+ /**
15
+ * Extract error message from response
16
+ */
17
+ export declare function extractErrorMessage(data: any): string;
18
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAyC,MAAM,YAAY,CAAC;AAEtF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA0E9D;AAiBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,CAI7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAQrD"}