@quickql/server 1.0.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 +21 -0
- package/README.md +91 -0
- package/dist/core/src/client.d.ts +57 -0
- package/dist/core/src/client.d.ts.map +1 -0
- package/dist/core/src/client.js +164 -0
- package/dist/core/src/client.js.map +1 -0
- package/dist/core/src/index.d.ts +13 -0
- package/dist/core/src/index.d.ts.map +1 -0
- package/dist/core/src/index.js +13 -0
- package/dist/core/src/index.js.map +1 -0
- package/dist/core/src/types.d.ts +82 -0
- package/dist/core/src/types.d.ts.map +1 -0
- package/dist/core/src/types.js +12 -0
- package/dist/core/src/types.js.map +1 -0
- package/dist/server/src/engine.d.ts +55 -0
- package/dist/server/src/engine.d.ts.map +1 -0
- package/dist/server/src/engine.js +422 -0
- package/dist/server/src/engine.js.map +1 -0
- package/dist/server/src/errors.d.ts +31 -0
- package/dist/server/src/errors.d.ts.map +1 -0
- package/dist/server/src/errors.js +73 -0
- package/dist/server/src/errors.js.map +1 -0
- package/dist/server/src/executor.d.ts +25 -0
- package/dist/server/src/executor.d.ts.map +1 -0
- package/dist/server/src/executor.js +121 -0
- package/dist/server/src/executor.js.map +1 -0
- package/dist/server/src/filters.d.ts +10 -0
- package/dist/server/src/filters.d.ts.map +1 -0
- package/dist/server/src/filters.js +47 -0
- package/dist/server/src/filters.js.map +1 -0
- package/dist/server/src/handler.d.ts +12 -0
- package/dist/server/src/handler.d.ts.map +1 -0
- package/dist/server/src/handler.js +138 -0
- package/dist/server/src/handler.js.map +1 -0
- package/dist/server/src/index.d.ts +25 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/index.js +26 -0
- package/dist/server/src/index.js.map +1 -0
- package/dist/server/src/parser/parser.d.ts +21 -0
- package/dist/server/src/parser/parser.d.ts.map +1 -0
- package/dist/server/src/parser/parser.js +99 -0
- package/dist/server/src/parser/parser.js.map +1 -0
- package/dist/server/src/parser/tokenizer.d.ts +18 -0
- package/dist/server/src/parser/tokenizer.d.ts.map +1 -0
- package/dist/server/src/parser/tokenizer.js +94 -0
- package/dist/server/src/parser/tokenizer.js.map +1 -0
- package/dist/server/src/parser/transformer.d.ts +24 -0
- package/dist/server/src/parser/transformer.d.ts.map +1 -0
- package/dist/server/src/parser/transformer.js +61 -0
- package/dist/server/src/parser/transformer.js.map +1 -0
- package/dist/server/src/parser/types.d.ts +21 -0
- package/dist/server/src/parser/types.d.ts.map +1 -0
- package/dist/server/src/parser/types.js +11 -0
- package/dist/server/src/parser/types.js.map +1 -0
- package/dist/server/src/playground/assets.d.ts +16 -0
- package/dist/server/src/playground/assets.d.ts.map +1 -0
- package/dist/server/src/playground/assets.js +1113 -0
- package/dist/server/src/playground/assets.js.map +1 -0
- package/dist/server/src/playground/docs.d.ts +15 -0
- package/dist/server/src/playground/docs.d.ts.map +1 -0
- package/dist/server/src/playground/docs.js +223 -0
- package/dist/server/src/playground/docs.js.map +1 -0
- package/dist/server/src/playground/html.d.ts +20 -0
- package/dist/server/src/playground/html.d.ts.map +1 -0
- package/dist/server/src/playground/html.js +50 -0
- package/dist/server/src/playground/html.js.map +1 -0
- package/dist/server/src/plugins/index.d.ts +21 -0
- package/dist/server/src/plugins/index.d.ts.map +1 -0
- package/dist/server/src/plugins/index.js +38 -0
- package/dist/server/src/plugins/index.js.map +1 -0
- package/dist/server/src/relations.d.ts +22 -0
- package/dist/server/src/relations.d.ts.map +1 -0
- package/dist/server/src/relations.js +98 -0
- package/dist/server/src/relations.js.map +1 -0
- package/dist/server/src/resolver/generator.d.ts +25 -0
- package/dist/server/src/resolver/generator.d.ts.map +1 -0
- package/dist/server/src/resolver/generator.js +65 -0
- package/dist/server/src/resolver/generator.js.map +1 -0
- package/dist/server/src/resolver/mapper.d.ts +23 -0
- package/dist/server/src/resolver/mapper.d.ts.map +1 -0
- package/dist/server/src/resolver/mapper.js +96 -0
- package/dist/server/src/resolver/mapper.js.map +1 -0
- package/dist/server/src/schema/builder.d.ts +21 -0
- package/dist/server/src/schema/builder.d.ts.map +1 -0
- package/dist/server/src/schema/builder.js +23 -0
- package/dist/server/src/schema/builder.js.map +1 -0
- package/dist/server/src/schema/types.d.ts +81 -0
- package/dist/server/src/schema/types.d.ts.map +1 -0
- package/dist/server/src/schema/types.js +11 -0
- package/dist/server/src/schema/types.js.map +1 -0
- package/dist/server/src/schema/utils.d.ts +16 -0
- package/dist/server/src/schema/utils.d.ts.map +1 -0
- package/dist/server/src/schema/utils.js +42 -0
- package/dist/server/src/schema/utils.js.map +1 -0
- package/dist/server/src/security.d.ts +46 -0
- package/dist/server/src/security.d.ts.map +1 -0
- package/dist/server/src/security.js +189 -0
- package/dist/server/src/security.js.map +1 -0
- package/dist/server/src/types.d.ts +158 -0
- package/dist/server/src/types.d.ts.map +1 -0
- package/dist/server/src/types.js +11 -0
- package/dist/server/src/types.js.map +1 -0
- package/dist/server/src/validator.d.ts +30 -0
- package/dist/server/src/validator.d.ts.map +1 -0
- package/dist/server/src/validator.js +171 -0
- package/dist/server/src/validator.js.map +1 -0
- package/package.json +25 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2026 Udinmo Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# @quickql/server
|
|
2
|
+
|
|
3
|
+
A high-performance, schema-driven API engine with native relational mapping and enterprise security by **Udinmo Inc.**
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **🚀 Ultra-Fast Relations**: Native $O(N+M)$ relation resolver that eliminates the N+1 problem without DataLoaders.
|
|
8
|
+
- **🔐 Enterprise Security**: Integrated RBAC (Role-Based Access Control), depth limiting, and complexity scoring.
|
|
9
|
+
- **🛠️ Zero-Boilerplate**: Fully automated resolver mapping for Prisma and other standard ORMs.
|
|
10
|
+
- **📦 Multi-Strategy Auth**: Built-in hooks for JWT, API Keys, and custom authentication.
|
|
11
|
+
- **🎨 Supreme Console**: A premium browser IDE for exploring your schema, traversing data relations, and testing queries.
|
|
12
|
+
- **⚡ Atomic Transactions**: Native support for batch mutation transactions at the engine level.
|
|
13
|
+
|
|
14
|
+
## Getting Started
|
|
15
|
+
|
|
16
|
+
### Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @quickql/server
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Basic Server Initialization
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { createServer } from '@quickql/server';
|
|
26
|
+
import { PrismaClient } from '@prisma/client';
|
|
27
|
+
|
|
28
|
+
const orm = new PrismaClient();
|
|
29
|
+
|
|
30
|
+
const server = createServer({
|
|
31
|
+
orm,
|
|
32
|
+
schema: {
|
|
33
|
+
users: {
|
|
34
|
+
model: 'User',
|
|
35
|
+
fields: ['id', 'email', 'name'],
|
|
36
|
+
relations: {
|
|
37
|
+
posts: { type: 'many', model: 'Post', foreignKey: 'userId' }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
auth: {
|
|
42
|
+
secret: 'udinmo-secret-123'
|
|
43
|
+
},
|
|
44
|
+
rbac: {
|
|
45
|
+
roles: {
|
|
46
|
+
'admin': { can: ['*'], write: ['*'] },
|
|
47
|
+
'user': { can: ['users', 'posts'] }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Use it with any HTTP framework (e.g. Express)
|
|
53
|
+
app.post('/quickql', async (req, res) => {
|
|
54
|
+
const result = await server.handleRequest(req.body, { ip: req.ip });
|
|
55
|
+
res.json(result);
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Advanced Customization
|
|
60
|
+
|
|
61
|
+
### Directives
|
|
62
|
+
Extend the query language with custom `@tags`:
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
const server = createServer({
|
|
66
|
+
directives: [
|
|
67
|
+
{
|
|
68
|
+
name: 'upper',
|
|
69
|
+
handler: (results) => results.map(row => ({ ...row, name: row.name?.toUpperCase() }))
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Lifecycle Hooks (Plugins)
|
|
76
|
+
Intercept any part of the execution flow:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
server.use({
|
|
80
|
+
name: 'audit-plugin',
|
|
81
|
+
onMutation: async (m, ctx) => {
|
|
82
|
+
console.log(`[AUDIT] Created ${m.collection} by ${ctx.user.id}`);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
(c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
90
|
+
MIT Licensed — see LICENSE for details.
|
|
91
|
+
Author: [Udinmo Inc.](https://udinmo.com)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickQL Core Client
|
|
3
|
+
*
|
|
4
|
+
* Standard HTTP client for interacting with QuickQL servers across
|
|
5
|
+
* all JavaScript environments. Handles batching, caching, and plugins.
|
|
6
|
+
*
|
|
7
|
+
* (c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
8
|
+
* Author: Udinmo Inc. <engineering@udinmo.com>
|
|
9
|
+
* License: MIT
|
|
10
|
+
*/
|
|
11
|
+
import { Query, Mutation, QuickQLRequest, QuickQLResponse, QuickQLError } from './types';
|
|
12
|
+
export interface ClientOptions {
|
|
13
|
+
endpoint: string;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
timeout?: number;
|
|
16
|
+
retry?: number;
|
|
17
|
+
cacheTTL?: number;
|
|
18
|
+
plugins?: QuickQLPlugin[];
|
|
19
|
+
}
|
|
20
|
+
export type LifecycleHook = 'beforeRequest' | 'afterResponse' | 'onError';
|
|
21
|
+
export interface QuickQLPlugin {
|
|
22
|
+
name: string;
|
|
23
|
+
onBeforeRequest?: (request: QuickQLRequest, context: any) => QuickQLRequest | Promise<QuickQLRequest>;
|
|
24
|
+
onAfterResponse?: (response: QuickQLResponse, context: any) => QuickQLResponse | Promise<QuickQLResponse>;
|
|
25
|
+
onError?: (error: QuickQLError, context: any) => void | Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Universal QuickQL Client for Browser and Node.js
|
|
29
|
+
*/
|
|
30
|
+
export declare class QuickQLClient {
|
|
31
|
+
private cache;
|
|
32
|
+
private options;
|
|
33
|
+
constructor(options: ClientOptions);
|
|
34
|
+
/**
|
|
35
|
+
* Main Query operation.
|
|
36
|
+
*/
|
|
37
|
+
query<T = any>(query: Query, alias?: string): Promise<QuickQLResponse<T>>;
|
|
38
|
+
/**
|
|
39
|
+
* Main Mutation operation.
|
|
40
|
+
*/
|
|
41
|
+
mutation<T = any>(mutation: Mutation, alias?: string): Promise<QuickQLResponse<T>>;
|
|
42
|
+
/**
|
|
43
|
+
* Batch multiple queries and mutations.
|
|
44
|
+
*/
|
|
45
|
+
batch(items: (Query | Mutation)[], transaction?: boolean): Promise<QuickQLResponse<any>>;
|
|
46
|
+
/**
|
|
47
|
+
* Low-level execution logic with plugin support.
|
|
48
|
+
*/
|
|
49
|
+
private execute;
|
|
50
|
+
private handleError;
|
|
51
|
+
private getCacheKey;
|
|
52
|
+
private getFromCache;
|
|
53
|
+
private setInCache;
|
|
54
|
+
clearCache(): void;
|
|
55
|
+
setHeaders(headers: Record<string, string>): void;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../core/src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAC/D,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACtG,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1G,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAqD;IAClE,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,EAAE,aAAa;IAelC;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,MAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAoBvF;;OAEG;IACG,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAE,MAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAWhG;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAS5F;;OAEG;YACW,OAAO;IAgDrB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IASX,UAAU;IAIV,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGlD"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickQL Core Client
|
|
3
|
+
*
|
|
4
|
+
* Standard HTTP client for interacting with QuickQL servers across
|
|
5
|
+
* all JavaScript environments. Handles batching, caching, and plugins.
|
|
6
|
+
*
|
|
7
|
+
* (c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
8
|
+
* Author: Udinmo Inc. <engineering@udinmo.com>
|
|
9
|
+
* License: MIT
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Universal QuickQL Client for Browser and Node.js
|
|
13
|
+
*/
|
|
14
|
+
export class QuickQLClient {
|
|
15
|
+
cache = new Map();
|
|
16
|
+
options;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
this.options = {
|
|
19
|
+
endpoint: options.endpoint,
|
|
20
|
+
headers: {
|
|
21
|
+
'Content-Type': 'application/json',
|
|
22
|
+
'X-QuickQL-Version': '1.0.0',
|
|
23
|
+
...(options.headers || {})
|
|
24
|
+
},
|
|
25
|
+
timeout: options.timeout || 15000,
|
|
26
|
+
retry: options.retry || 1,
|
|
27
|
+
cacheTTL: options.cacheTTL || 0,
|
|
28
|
+
plugins: options.plugins || []
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Main Query operation.
|
|
33
|
+
*/
|
|
34
|
+
async query(query, alias = 'data') {
|
|
35
|
+
const key = this.getCacheKey({ query, alias });
|
|
36
|
+
const cached = this.getFromCache(key);
|
|
37
|
+
if (cached)
|
|
38
|
+
return cached;
|
|
39
|
+
try {
|
|
40
|
+
const response = await this.execute({
|
|
41
|
+
queries: { [alias]: query }
|
|
42
|
+
});
|
|
43
|
+
const res = response;
|
|
44
|
+
if (res.data && !res.errors) {
|
|
45
|
+
this.setInCache(key, res);
|
|
46
|
+
}
|
|
47
|
+
return res;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return this.handleError(error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Main Mutation operation.
|
|
55
|
+
*/
|
|
56
|
+
async mutation(mutation, alias = 'data') {
|
|
57
|
+
try {
|
|
58
|
+
const response = await this.execute({
|
|
59
|
+
mutations: { [alias]: mutation }
|
|
60
|
+
});
|
|
61
|
+
return response;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return this.handleError(error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Batch multiple queries and mutations.
|
|
69
|
+
*/
|
|
70
|
+
async batch(items, transaction = false) {
|
|
71
|
+
try {
|
|
72
|
+
const response = await this.execute({ batch: items, transaction });
|
|
73
|
+
return response;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return this.handleError(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Low-level execution logic with plugin support.
|
|
81
|
+
*/
|
|
82
|
+
async execute(request, retries = this.options.retry) {
|
|
83
|
+
let currentRequest = request;
|
|
84
|
+
// Trigger onBeforeRequest hooks
|
|
85
|
+
for (const plugin of this.options.plugins) {
|
|
86
|
+
if (plugin.onBeforeRequest) {
|
|
87
|
+
currentRequest = await plugin.onBeforeRequest(currentRequest, this);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const controller = new AbortController();
|
|
91
|
+
const timeoutId = setTimeout(() => controller.abort(), this.options.timeout);
|
|
92
|
+
try {
|
|
93
|
+
const response = await fetch(this.options.endpoint, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers: this.options.headers,
|
|
96
|
+
body: JSON.stringify(currentRequest),
|
|
97
|
+
signal: controller.signal
|
|
98
|
+
});
|
|
99
|
+
clearTimeout(timeoutId);
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
throw new Error(`QuickQL Client Error: ${response.status} ${response.statusText}`);
|
|
102
|
+
}
|
|
103
|
+
let data = await response.json();
|
|
104
|
+
// Trigger onAfterResponse hooks
|
|
105
|
+
for (const plugin of this.options.plugins) {
|
|
106
|
+
if (plugin.onAfterResponse) {
|
|
107
|
+
data = await plugin.onAfterResponse(data, this);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return data;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
clearTimeout(timeoutId);
|
|
114
|
+
if (retries > 0 && error.name !== 'AbortError') {
|
|
115
|
+
return this.execute(request, retries - 1);
|
|
116
|
+
}
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
handleError(error) {
|
|
121
|
+
const isTimeout = error.name === 'AbortError';
|
|
122
|
+
const quickError = {
|
|
123
|
+
type: isTimeout ? 'NETWORK' : 'INTERNAL',
|
|
124
|
+
message: error.message || 'Unknown QuickQL Client error',
|
|
125
|
+
code: isTimeout ? 'TIMEOUT' : 'CLIENT_EXCEPTION'
|
|
126
|
+
};
|
|
127
|
+
// Trigger plugins
|
|
128
|
+
for (const plugin of this.options.plugins) {
|
|
129
|
+
if (plugin.onError) {
|
|
130
|
+
plugin.onError(quickError, this);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
data: null,
|
|
135
|
+
errors: [quickError]
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
getCacheKey(request) {
|
|
139
|
+
return JSON.stringify(request);
|
|
140
|
+
}
|
|
141
|
+
getFromCache(key) {
|
|
142
|
+
const cached = this.cache.get(key);
|
|
143
|
+
if (cached && cached.expiry > Date.now()) {
|
|
144
|
+
return cached.value;
|
|
145
|
+
}
|
|
146
|
+
this.cache.delete(key);
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
setInCache(key, value) {
|
|
150
|
+
if (this.options.cacheTTL > 0) {
|
|
151
|
+
this.cache.set(key, {
|
|
152
|
+
value,
|
|
153
|
+
expiry: Date.now() + this.options.cacheTTL
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
clearCache() {
|
|
158
|
+
this.cache.clear();
|
|
159
|
+
}
|
|
160
|
+
setHeaders(headers) {
|
|
161
|
+
this.options.headers = { ...this.options.headers, ...headers };
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../core/src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickQL Core SDK
|
|
3
|
+
*
|
|
4
|
+
* Shared logic and client for the QuickQL ecosystem.
|
|
5
|
+
* Managed by Udinmo Inc.
|
|
6
|
+
*
|
|
7
|
+
* (c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
8
|
+
* Author: Udinmo Inc. <engineering@udinmo.com>
|
|
9
|
+
* License: MIT
|
|
10
|
+
*/
|
|
11
|
+
export * from './types';
|
|
12
|
+
export * from './client';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickQL Core SDK
|
|
3
|
+
*
|
|
4
|
+
* Shared logic and client for the QuickQL ecosystem.
|
|
5
|
+
* Managed by Udinmo Inc.
|
|
6
|
+
*
|
|
7
|
+
* (c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
8
|
+
* Author: Udinmo Inc. <engineering@udinmo.com>
|
|
9
|
+
* License: MIT
|
|
10
|
+
*/
|
|
11
|
+
export * from './types';
|
|
12
|
+
export * from './client';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../core/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickQL Core Types
|
|
3
|
+
*
|
|
4
|
+
* Shared type definitions for queries, mutations, and responses.
|
|
5
|
+
* Ensured parity between server and client expectations.
|
|
6
|
+
*
|
|
7
|
+
* (c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
8
|
+
* Author: Udinmo Inc. <engineering@udinmo.com>
|
|
9
|
+
* License: MIT
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* QuickQL Core Types - Refined for Production
|
|
13
|
+
*/
|
|
14
|
+
export type Operator = 'eq' | 'ne' | 'gt' | 'lt' | 'in' | 'contains' | 'startsWith' | 'endsWith';
|
|
15
|
+
export type WhereValue = string | number | boolean | Array<string | number | boolean> | null;
|
|
16
|
+
export type WhereCondition = {
|
|
17
|
+
[operator in Operator]?: WhereValue;
|
|
18
|
+
} | WhereValue;
|
|
19
|
+
export type LogicalCondition = {
|
|
20
|
+
AND?: (WhereClause | LogicalCondition)[];
|
|
21
|
+
OR?: (WhereClause | LogicalCondition)[];
|
|
22
|
+
};
|
|
23
|
+
export type WhereClause = {
|
|
24
|
+
[field: string]: WhereCondition | LogicalCondition;
|
|
25
|
+
};
|
|
26
|
+
export type IncludeClause = {
|
|
27
|
+
[relation: string]: Partial<Query>;
|
|
28
|
+
};
|
|
29
|
+
export type OrderDirection = 'asc' | 'desc';
|
|
30
|
+
export type OrderBy = {
|
|
31
|
+
[field: string]: OrderDirection;
|
|
32
|
+
};
|
|
33
|
+
export interface Query {
|
|
34
|
+
from: string;
|
|
35
|
+
select?: string[];
|
|
36
|
+
alias?: string;
|
|
37
|
+
where?: WhereClause | LogicalCondition;
|
|
38
|
+
include?: IncludeClause;
|
|
39
|
+
limit?: number;
|
|
40
|
+
offset?: number;
|
|
41
|
+
orderBy?: OrderBy;
|
|
42
|
+
aggregate?: {
|
|
43
|
+
count?: boolean;
|
|
44
|
+
sum?: string;
|
|
45
|
+
avg?: string;
|
|
46
|
+
max?: string;
|
|
47
|
+
min?: string;
|
|
48
|
+
};
|
|
49
|
+
directives?: Record<string, any>;
|
|
50
|
+
}
|
|
51
|
+
export type MutationType = 'create' | 'update' | 'delete';
|
|
52
|
+
export interface Mutation {
|
|
53
|
+
type: MutationType;
|
|
54
|
+
collection: string;
|
|
55
|
+
data?: Record<string, unknown>;
|
|
56
|
+
where?: WhereClause | LogicalCondition;
|
|
57
|
+
select?: string[];
|
|
58
|
+
}
|
|
59
|
+
export interface QuickQLRequest {
|
|
60
|
+
queries?: Record<string, Query>;
|
|
61
|
+
mutations?: Record<string, Mutation>;
|
|
62
|
+
batch?: (Query | Mutation)[];
|
|
63
|
+
transaction?: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface QuickQLError {
|
|
66
|
+
type: 'VALIDATION' | 'NETWORK' | 'AUTH' | 'INTERNAL' | 'NOT_FOUND' | 'SECURITY';
|
|
67
|
+
message: string;
|
|
68
|
+
code?: string;
|
|
69
|
+
path?: string[];
|
|
70
|
+
stack?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface QuickQLResponse<T = unknown> {
|
|
73
|
+
data: T | null;
|
|
74
|
+
errors?: QuickQLError[];
|
|
75
|
+
meta?: {
|
|
76
|
+
count?: number;
|
|
77
|
+
total?: number;
|
|
78
|
+
executionTime?: number;
|
|
79
|
+
hints?: string[];
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../core/src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickQL Core Types
|
|
3
|
+
*
|
|
4
|
+
* Shared type definitions for queries, mutations, and responses.
|
|
5
|
+
* Ensured parity between server and client expectations.
|
|
6
|
+
*
|
|
7
|
+
* (c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
8
|
+
* Author: Udinmo Inc. <engineering@udinmo.com>
|
|
9
|
+
* License: MIT
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../core/src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickQL Server Engine
|
|
3
|
+
*
|
|
4
|
+
* Central orchestration layer for parsing, validating, and executing QuickQL requests.
|
|
5
|
+
*
|
|
6
|
+
* (c) 2024-2026 Udinmo Inc. All rights reserved.
|
|
7
|
+
* Author: Udinmo Inc. <engineering@udinmo.com>
|
|
8
|
+
* License: MIT
|
|
9
|
+
*/
|
|
10
|
+
import { QuickQLResponse, QuickQLRequest } from '@quickql/core';
|
|
11
|
+
import { SchemaConfig, ServerOptions, QuickQLPlugin, ServerFeatures } from './types';
|
|
12
|
+
import { SchemaOptions } from './schema/types';
|
|
13
|
+
export interface ExtendedServerOptions extends Partial<ServerOptions> {
|
|
14
|
+
schema?: SchemaConfig;
|
|
15
|
+
orm?: any;
|
|
16
|
+
schemaOptions?: SchemaOptions;
|
|
17
|
+
features?: ServerFeatures;
|
|
18
|
+
}
|
|
19
|
+
export declare class QuickQLServer {
|
|
20
|
+
private options;
|
|
21
|
+
private validator;
|
|
22
|
+
private executor;
|
|
23
|
+
private security;
|
|
24
|
+
private cache;
|
|
25
|
+
private activePlugins;
|
|
26
|
+
constructor(options: ExtendedServerOptions);
|
|
27
|
+
use(plugin: QuickQLPlugin): this;
|
|
28
|
+
getOptions(): Required<ExtendedServerOptions>;
|
|
29
|
+
getSchemaSummary(): {
|
|
30
|
+
name: string;
|
|
31
|
+
fields: string[] | Record<string, any>;
|
|
32
|
+
relations: {
|
|
33
|
+
name: string;
|
|
34
|
+
target: string;
|
|
35
|
+
}[];
|
|
36
|
+
}[];
|
|
37
|
+
private mapRelations;
|
|
38
|
+
/**
|
|
39
|
+
* Main Entry Point with security enforcement and context building.
|
|
40
|
+
*/
|
|
41
|
+
handleRequest(requestInput: QuickQLRequest | string, reqCtx?: any): Promise<QuickQLResponse>;
|
|
42
|
+
private processSyntaxMutations;
|
|
43
|
+
private processQuery;
|
|
44
|
+
private processMutation;
|
|
45
|
+
private shouldRunHook;
|
|
46
|
+
private runBeforeQueryHook;
|
|
47
|
+
private runAfterQueryHook;
|
|
48
|
+
private runOnMutationHook;
|
|
49
|
+
private runBeforeMutationHook;
|
|
50
|
+
private runOnErrorHook;
|
|
51
|
+
private generateSmartHints;
|
|
52
|
+
private log;
|
|
53
|
+
}
|
|
54
|
+
export declare function createServer(options: ExtendedServerOptions): QuickQLServer;
|
|
55
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAwB,cAAc,EAAE,MAAM,SAAS,CAAC;AAS3G,OAAO,EAAE,aAAa,EAAwB,MAAM,gBAAgB,CAAC;AAErE,MAAM,WAAW,qBAAsB,SAAQ,OAAO,CAAC,aAAa,CAAC;IACnE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAiE;IAC9E,OAAO,CAAC,aAAa,CAAuB;gBAEhC,OAAO,EAAE,qBAAqB;IA4DnC,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKhC,UAAU,IAAI,QAAQ,CAAC,qBAAqB,CAAC;IAI7C,gBAAgB;;;;;;;;IAQvB,OAAO,CAAC,YAAY;IAapB;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,cAAc,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;IAkIlG,OAAO,CAAC,sBAAsB;YAehB,YAAY;YAuDZ,eAAe;YAsCf,aAAa;YAKb,kBAAkB;YAWlB,iBAAiB;YAWjB,iBAAiB;YAQjB,qBAAqB;YAWrB,cAAc;IAQ5B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,GAAG;CAgCZ;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,CAE1E"}
|