@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.
- package/LICENSE +22 -0
- package/README.md +483 -0
- package/dist/client.d.ts +29 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +48 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/query-builder.d.ts +91 -0
- package/dist/query-builder.d.ts.map +1 -0
- package/dist/query-builder.js +160 -0
- package/dist/query-builder.js.map +1 -0
- package/dist/table.d.ts +56 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +234 -0
- package/dist/table.js.map +1 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +18 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +115 -0
- package/dist/utils.js.map +1 -0
- package/package.json +51 -0
package/dist/utils.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build query string from query options
|
|
3
|
+
*/
|
|
4
|
+
export function buildQueryString(options) {
|
|
5
|
+
const params = [];
|
|
6
|
+
// Select columns
|
|
7
|
+
if (options.select && options.select.length > 0) {
|
|
8
|
+
params.push(`select=${encodeURIComponent(options.select.join(','))}`);
|
|
9
|
+
}
|
|
10
|
+
// Eager load relationships
|
|
11
|
+
if (options.with && options.with.length > 0) {
|
|
12
|
+
params.push(`with=${encodeURIComponent(options.with.join(','))}`);
|
|
13
|
+
}
|
|
14
|
+
// Manual joins
|
|
15
|
+
if (options.joins && options.joins.length > 0) {
|
|
16
|
+
const joinStrings = options.joins.map(join => formatJoin(join));
|
|
17
|
+
params.push(`join=${encodeURIComponent(joinStrings.join('|'))}`);
|
|
18
|
+
}
|
|
19
|
+
// Where conditions
|
|
20
|
+
if (options.where) {
|
|
21
|
+
for (const [key, value] of Object.entries(options.where)) {
|
|
22
|
+
if (value === null || value === undefined) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
// Check if it's a relationship filter (contains dot)
|
|
26
|
+
if (key.includes('.')) {
|
|
27
|
+
// Relationship filter: user.name=John
|
|
28
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
29
|
+
}
|
|
30
|
+
else if (typeof value === 'object' && !Array.isArray(value)) {
|
|
31
|
+
// Operator-based filter: { eq: 'value', gt: 10 }
|
|
32
|
+
for (const [op, val] of Object.entries(value)) {
|
|
33
|
+
if (val !== null && val !== undefined) {
|
|
34
|
+
const operator = op;
|
|
35
|
+
if (Array.isArray(val)) {
|
|
36
|
+
// Handle array values for 'in' and 'nin' operators
|
|
37
|
+
params.push(`${encodeURIComponent(key)}.${operator}=${encodeURIComponent(val.join(','))}`);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
params.push(`${encodeURIComponent(key)}.${operator}=${encodeURIComponent(String(val))}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Simple equality filter
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
params.push(`${encodeURIComponent(key)}.in=${encodeURIComponent(value.join(','))}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Pagination
|
|
57
|
+
if (options.page !== undefined) {
|
|
58
|
+
params.push(`page=${options.page}`);
|
|
59
|
+
}
|
|
60
|
+
if (options.limit !== undefined) {
|
|
61
|
+
params.push(`limit=${options.limit}`);
|
|
62
|
+
}
|
|
63
|
+
if (options.offset !== undefined) {
|
|
64
|
+
params.push(`offset=${options.offset}`);
|
|
65
|
+
}
|
|
66
|
+
// Ordering
|
|
67
|
+
if (options.orderBy) {
|
|
68
|
+
params.push(`orderBy=${encodeURIComponent(options.orderBy)}`);
|
|
69
|
+
if (options.order) {
|
|
70
|
+
params.push(`order=${options.order}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return params.length > 0 ? `?${params.join('&')}` : '';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Format join configuration to string
|
|
77
|
+
* Format: table:local_col=ref_col:type:alias
|
|
78
|
+
*/
|
|
79
|
+
function formatJoin(join) {
|
|
80
|
+
const parts = [
|
|
81
|
+
join.table,
|
|
82
|
+
join.localColumn,
|
|
83
|
+
join.refColumn,
|
|
84
|
+
join.type || 'INNER',
|
|
85
|
+
join.alias || join.table.toLowerCase()
|
|
86
|
+
];
|
|
87
|
+
return parts.join(':');
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Parse response data
|
|
91
|
+
*/
|
|
92
|
+
export function parseResponse(data) {
|
|
93
|
+
// If the response has a 'results' property, it's a paginated response
|
|
94
|
+
// Otherwise, return the data as-is
|
|
95
|
+
return data;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if response is an error
|
|
99
|
+
*/
|
|
100
|
+
export function isErrorResponse(data) {
|
|
101
|
+
return data && (data.error || data.message);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Extract error message from response
|
|
105
|
+
*/
|
|
106
|
+
export function extractErrorMessage(data) {
|
|
107
|
+
if (data.error) {
|
|
108
|
+
return data.error;
|
|
109
|
+
}
|
|
110
|
+
if (data.message) {
|
|
111
|
+
return data.message;
|
|
112
|
+
}
|
|
113
|
+
return 'Unknown error occurred';
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@m4rctr3y/reutjs",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "TypeScript/JavaScript client library for Reut backend API. Provides a type-safe, fluent API similar to Supabase's JavaScript client.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"dev": "tsc --watch",
|
|
11
|
+
"prepublishOnly": "npm run build"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"reut",
|
|
15
|
+
"api",
|
|
16
|
+
"client",
|
|
17
|
+
"typescript",
|
|
18
|
+
"query-builder",
|
|
19
|
+
"rest",
|
|
20
|
+
"database",
|
|
21
|
+
"orm"
|
|
22
|
+
],
|
|
23
|
+
"author": "",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/m4rcTr3y/reutjs.git"
|
|
28
|
+
},
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/m4rcTr3y/reutjs/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/m4rcTr3y/reutjs#readme",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"axios": "^1.6.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^20.10.0",
|
|
38
|
+
"typescript": "^5.3.0"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"axios": "^1.6.0"
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"dist",
|
|
45
|
+
"README.md"
|
|
46
|
+
],
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=18.0.0"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|