@tablecraft/engine 0.1.0-beta.1
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/src/__tests__/inputValidator.test.d.ts +2 -0
- package/dist/src/__tests__/inputValidator.test.d.ts.map +1 -0
- package/dist/src/__tests__/inputValidator.test.js +205 -0
- package/dist/src/__tests__/inputValidator.test.js.map +1 -0
- package/dist/src/__tests__/metadataBuilder.test.d.ts +2 -0
- package/dist/src/__tests__/metadataBuilder.test.d.ts.map +1 -0
- package/dist/src/__tests__/metadataBuilder.test.js +221 -0
- package/dist/src/__tests__/metadataBuilder.test.js.map +1 -0
- package/dist/src/core/aggregationBuilder.d.ts +17 -0
- package/dist/src/core/aggregationBuilder.d.ts.map +1 -0
- package/dist/src/core/aggregationBuilder.js +81 -0
- package/dist/src/core/aggregationBuilder.js.map +1 -0
- package/dist/src/core/cursorPagination.d.ts +36 -0
- package/dist/src/core/cursorPagination.d.ts.map +1 -0
- package/dist/src/core/cursorPagination.js +88 -0
- package/dist/src/core/cursorPagination.js.map +1 -0
- package/dist/src/core/datePresets.d.ts +19 -0
- package/dist/src/core/datePresets.d.ts.map +1 -0
- package/dist/src/core/datePresets.js +96 -0
- package/dist/src/core/datePresets.js.map +1 -0
- package/dist/src/core/dialect.d.ts +17 -0
- package/dist/src/core/dialect.d.ts.map +1 -0
- package/dist/src/core/dialect.js +60 -0
- package/dist/src/core/dialect.js.map +1 -0
- package/dist/src/core/fieldSelector.d.ts +19 -0
- package/dist/src/core/fieldSelector.d.ts.map +1 -0
- package/dist/src/core/fieldSelector.js +49 -0
- package/dist/src/core/fieldSelector.js.map +1 -0
- package/dist/src/core/filterBuilder.d.ts +22 -0
- package/dist/src/core/filterBuilder.d.ts.map +1 -0
- package/dist/src/core/filterBuilder.js +112 -0
- package/dist/src/core/filterBuilder.js.map +1 -0
- package/dist/src/core/filterGroupBuilder.d.ts +28 -0
- package/dist/src/core/filterGroupBuilder.d.ts.map +1 -0
- package/dist/src/core/filterGroupBuilder.js +73 -0
- package/dist/src/core/filterGroupBuilder.js.map +1 -0
- package/dist/src/core/groupByBuilder.d.ts +23 -0
- package/dist/src/core/groupByBuilder.d.ts.map +1 -0
- package/dist/src/core/groupByBuilder.js +127 -0
- package/dist/src/core/groupByBuilder.js.map +1 -0
- package/dist/src/core/inputValidator.d.ts +8 -0
- package/dist/src/core/inputValidator.d.ts.map +1 -0
- package/dist/src/core/inputValidator.js +117 -0
- package/dist/src/core/inputValidator.js.map +1 -0
- package/dist/src/core/metadataBuilder.d.ts +91 -0
- package/dist/src/core/metadataBuilder.d.ts.map +1 -0
- package/dist/src/core/metadataBuilder.js +220 -0
- package/dist/src/core/metadataBuilder.js.map +1 -0
- package/dist/src/core/paginationBuilder.d.ts +20 -0
- package/dist/src/core/paginationBuilder.d.ts.map +1 -0
- package/dist/src/core/paginationBuilder.js +42 -0
- package/dist/src/core/paginationBuilder.js.map +1 -0
- package/dist/src/core/queryBuilder.d.ts +20 -0
- package/dist/src/core/queryBuilder.d.ts.map +1 -0
- package/dist/src/core/queryBuilder.js +163 -0
- package/dist/src/core/queryBuilder.js.map +1 -0
- package/dist/src/core/recursiveBuilder.d.ts +25 -0
- package/dist/src/core/recursiveBuilder.d.ts.map +1 -0
- package/dist/src/core/recursiveBuilder.js +86 -0
- package/dist/src/core/recursiveBuilder.js.map +1 -0
- package/dist/src/core/relationBuilder.d.ts +19 -0
- package/dist/src/core/relationBuilder.d.ts.map +1 -0
- package/dist/src/core/relationBuilder.js +118 -0
- package/dist/src/core/relationBuilder.js.map +1 -0
- package/dist/src/core/roleFilter.d.ts +11 -0
- package/dist/src/core/roleFilter.d.ts.map +1 -0
- package/dist/src/core/roleFilter.js +24 -0
- package/dist/src/core/roleFilter.js.map +1 -0
- package/dist/src/core/searchBuilder.d.ts +17 -0
- package/dist/src/core/searchBuilder.d.ts.map +1 -0
- package/dist/src/core/searchBuilder.js +71 -0
- package/dist/src/core/searchBuilder.js.map +1 -0
- package/dist/src/core/softDelete.d.ts +12 -0
- package/dist/src/core/softDelete.d.ts.map +1 -0
- package/dist/src/core/softDelete.js +29 -0
- package/dist/src/core/softDelete.js.map +1 -0
- package/dist/src/core/sortBuilder.d.ts +14 -0
- package/dist/src/core/sortBuilder.d.ts.map +1 -0
- package/dist/src/core/sortBuilder.js +58 -0
- package/dist/src/core/sortBuilder.js.map +1 -0
- package/dist/src/core/subqueryBuilder.d.ts +13 -0
- package/dist/src/core/subqueryBuilder.d.ts.map +1 -0
- package/dist/src/core/subqueryBuilder.js +47 -0
- package/dist/src/core/subqueryBuilder.js.map +1 -0
- package/dist/src/core/validator.d.ts +18 -0
- package/dist/src/core/validator.d.ts.map +1 -0
- package/dist/src/core/validator.js +88 -0
- package/dist/src/core/validator.js.map +1 -0
- package/dist/src/define.d.ts +274 -0
- package/dist/src/define.d.ts.map +1 -0
- package/dist/src/define.js +690 -0
- package/dist/src/define.js.map +1 -0
- package/dist/src/engine.d.ts +17 -0
- package/dist/src/engine.d.ts.map +1 -0
- package/dist/src/engine.js +429 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/errors.d.ts +53 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +80 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/index.d.ts +37 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +41 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/engine.d.ts +92 -0
- package/dist/src/types/engine.d.ts.map +1 -0
- package/dist/src/types/engine.js +2 -0
- package/dist/src/types/engine.js.map +1 -0
- package/dist/src/types/table.d.ts +867 -0
- package/dist/src/types/table.d.ts.map +1 -0
- package/dist/src/types/table.js +198 -0
- package/dist/src/types/table.js.map +1 -0
- package/dist/src/utils/adapterUtils.d.ts +16 -0
- package/dist/src/utils/adapterUtils.d.ts.map +1 -0
- package/dist/src/utils/adapterUtils.js +28 -0
- package/dist/src/utils/adapterUtils.js.map +1 -0
- package/dist/src/utils/codegen.d.ts +7 -0
- package/dist/src/utils/codegen.d.ts.map +1 -0
- package/dist/src/utils/codegen.js +126 -0
- package/dist/src/utils/codegen.js.map +1 -0
- package/dist/src/utils/export.d.ts +15 -0
- package/dist/src/utils/export.d.ts.map +1 -0
- package/dist/src/utils/export.js +42 -0
- package/dist/src/utils/export.js.map +1 -0
- package/dist/src/utils/introspect.d.ts +32 -0
- package/dist/src/utils/introspect.d.ts.map +1 -0
- package/dist/src/utils/introspect.js +174 -0
- package/dist/src/utils/introspect.js.map +1 -0
- package/dist/src/utils/openapi.d.ts +6 -0
- package/dist/src/utils/openapi.d.ts.map +1 -0
- package/dist/src/utils/openapi.js +138 -0
- package/dist/src/utils/openapi.js.map +1 -0
- package/dist/src/utils/operators.d.ts +8 -0
- package/dist/src/utils/operators.d.ts.map +1 -0
- package/dist/src/utils/operators.js +70 -0
- package/dist/src/utils/operators.js.map +1 -0
- package/dist/src/utils/requestParser.d.ts +18 -0
- package/dist/src/utils/requestParser.d.ts.map +1 -0
- package/dist/src/utils/requestParser.js +126 -0
- package/dist/src/utils/requestParser.js.map +1 -0
- package/dist/src/utils/responseFormatter.d.ts +12 -0
- package/dist/src/utils/responseFormatter.d.ts.map +1 -0
- package/dist/src/utils/responseFormatter.js +106 -0
- package/dist/src/utils/responseFormatter.js.map +1 -0
- package/dist/src/utils/typedSql.d.ts +70 -0
- package/dist/src/utils/typedSql.d.ts.map +1 -0
- package/dist/src/utils/typedSql.js +102 -0
- package/dist/src/utils/typedSql.js.map +1 -0
- package/dist/test/columnMeta.test.d.ts +2 -0
- package/dist/test/columnMeta.test.d.ts.map +1 -0
- package/dist/test/columnMeta.test.js +92 -0
- package/dist/test/columnMeta.test.js.map +1 -0
- package/dist/test/core/aggregationBuilder.test.d.ts +2 -0
- package/dist/test/core/aggregationBuilder.test.d.ts.map +1 -0
- package/dist/test/core/aggregationBuilder.test.js +64 -0
- package/dist/test/core/aggregationBuilder.test.js.map +1 -0
- package/dist/test/core/filterBuilder.test.d.ts +2 -0
- package/dist/test/core/filterBuilder.test.d.ts.map +1 -0
- package/dist/test/core/filterBuilder.test.js +80 -0
- package/dist/test/core/filterBuilder.test.js.map +1 -0
- package/dist/test/core/paginationBuilder.test.d.ts +2 -0
- package/dist/test/core/paginationBuilder.test.d.ts.map +1 -0
- package/dist/test/core/paginationBuilder.test.js +63 -0
- package/dist/test/core/paginationBuilder.test.js.map +1 -0
- package/dist/test/core/queryBuilder.test.d.ts +2 -0
- package/dist/test/core/queryBuilder.test.d.ts.map +1 -0
- package/dist/test/core/queryBuilder.test.js +92 -0
- package/dist/test/core/queryBuilder.test.js.map +1 -0
- package/dist/test/core/searchBuilder.test.d.ts +2 -0
- package/dist/test/core/searchBuilder.test.d.ts.map +1 -0
- package/dist/test/core/searchBuilder.test.js +68 -0
- package/dist/test/core/searchBuilder.test.js.map +1 -0
- package/dist/test/core/softDelete.test.d.ts +2 -0
- package/dist/test/core/softDelete.test.d.ts.map +1 -0
- package/dist/test/core/softDelete.test.js +60 -0
- package/dist/test/core/softDelete.test.js.map +1 -0
- package/dist/test/core/sortBuilder.test.d.ts +2 -0
- package/dist/test/core/sortBuilder.test.d.ts.map +1 -0
- package/dist/test/core/sortBuilder.test.js +59 -0
- package/dist/test/core/sortBuilder.test.js.map +1 -0
- package/dist/test/core/subqueryBuilder.test.d.ts +2 -0
- package/dist/test/core/subqueryBuilder.test.d.ts.map +1 -0
- package/dist/test/core/subqueryBuilder.test.js +48 -0
- package/dist/test/core/subqueryBuilder.test.js.map +1 -0
- package/dist/test/core/validator.test.d.ts +2 -0
- package/dist/test/core/validator.test.d.ts.map +1 -0
- package/dist/test/core/validator.test.js +81 -0
- package/dist/test/core/validator.test.js.map +1 -0
- package/dist/test/datePresets.test.d.ts +2 -0
- package/dist/test/datePresets.test.d.ts.map +1 -0
- package/dist/test/datePresets.test.js +57 -0
- package/dist/test/datePresets.test.js.map +1 -0
- package/dist/test/errors.test.d.ts +2 -0
- package/dist/test/errors.test.d.ts.map +1 -0
- package/dist/test/errors.test.js +62 -0
- package/dist/test/errors.test.js.map +1 -0
- package/dist/test/inputValidator.test.d.ts +2 -0
- package/dist/test/inputValidator.test.d.ts.map +1 -0
- package/dist/test/inputValidator.test.js +60 -0
- package/dist/test/inputValidator.test.js.map +1 -0
- package/dist/test/metadata.test.d.ts +2 -0
- package/dist/test/metadata.test.d.ts.map +1 -0
- package/dist/test/metadata.test.js +285 -0
- package/dist/test/metadata.test.js.map +1 -0
- package/dist/test/metadataComplete.test.d.ts +2 -0
- package/dist/test/metadataComplete.test.d.ts.map +1 -0
- package/dist/test/metadataComplete.test.js +113 -0
- package/dist/test/metadataComplete.test.js.map +1 -0
- package/dist/test/roleFilter.test.d.ts +2 -0
- package/dist/test/roleFilter.test.d.ts.map +1 -0
- package/dist/test/roleFilter.test.js +53 -0
- package/dist/test/roleFilter.test.js.map +1 -0
- package/dist/test/typedSql.test.d.ts +2 -0
- package/dist/test/typedSql.test.d.ts.map +1 -0
- package/dist/test/typedSql.test.js +63 -0
- package/dist/test/typedSql.test.js.map +1 -0
- package/dist/test/utils/codegen.test.d.ts +2 -0
- package/dist/test/utils/codegen.test.d.ts.map +1 -0
- package/dist/test/utils/codegen.test.js +65 -0
- package/dist/test/utils/codegen.test.js.map +1 -0
- package/dist/test/utils/export.test.d.ts +2 -0
- package/dist/test/utils/export.test.d.ts.map +1 -0
- package/dist/test/utils/export.test.js +54 -0
- package/dist/test/utils/export.test.js.map +1 -0
- package/dist/test/utils/openapi.test.d.ts +2 -0
- package/dist/test/utils/openapi.test.d.ts.map +1 -0
- package/dist/test/utils/openapi.test.js +65 -0
- package/dist/test/utils/openapi.test.js.map +1 -0
- package/dist/test/utils/requestParser.test.d.ts +2 -0
- package/dist/test/utils/requestParser.test.d.ts.map +1 -0
- package/dist/test/utils/requestParser.test.js +89 -0
- package/dist/test/utils/requestParser.test.js.map +1 -0
- package/dist/test/utils/responseFormatter.test.d.ts +2 -0
- package/dist/test/utils/responseFormatter.test.d.ts.map +1 -0
- package/dist/test/utils/responseFormatter.test.js +79 -0
- package/dist/test/utils/responseFormatter.test.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all TableCraft errors.
|
|
3
|
+
* Every error has a `code` for programmatic handling.
|
|
4
|
+
*/
|
|
5
|
+
export class TableCraftError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
statusCode;
|
|
8
|
+
details;
|
|
9
|
+
constructor(message, code, statusCode = 500, details) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'TableCraftError';
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.statusCode = statusCode;
|
|
14
|
+
this.details = details;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Configuration is invalid (bad column name, missing table, etc.)
|
|
19
|
+
*/
|
|
20
|
+
export class ConfigError extends TableCraftError {
|
|
21
|
+
constructor(message, details) {
|
|
22
|
+
super(message, 'CONFIG_ERROR', 400, details);
|
|
23
|
+
this.name = 'ConfigError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A filter, sort, or select references a field that doesn't exist or isn't allowed.
|
|
28
|
+
*/
|
|
29
|
+
export class FieldError extends TableCraftError {
|
|
30
|
+
constructor(field, reason) {
|
|
31
|
+
super(`Field '${field}': ${reason}`, 'FIELD_ERROR', 400, { field, reason });
|
|
32
|
+
this.name = 'FieldError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A filter value has the wrong type for its column.
|
|
37
|
+
*/
|
|
38
|
+
export class ValidationError extends TableCraftError {
|
|
39
|
+
constructor(field, expected, received) {
|
|
40
|
+
super(`Invalid value for '${field}': expected ${expected}, got ${typeof received}`, 'VALIDATION_ERROR', 400, { field, expected, received });
|
|
41
|
+
this.name = 'ValidationError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Access denied — user lacks required role/permission.
|
|
46
|
+
*/
|
|
47
|
+
export class AccessDeniedError extends TableCraftError {
|
|
48
|
+
constructor(resource, reason) {
|
|
49
|
+
super(`Access denied to '${resource}'${reason ? `: ${reason}` : ''}`, 'ACCESS_DENIED', 403, { resource, reason });
|
|
50
|
+
this.name = 'AccessDeniedError';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The requested resource/table was not found.
|
|
55
|
+
*/
|
|
56
|
+
export class NotFoundError extends TableCraftError {
|
|
57
|
+
constructor(resource) {
|
|
58
|
+
super(`Resource '${resource}' not found`, 'NOT_FOUND', 404, { resource });
|
|
59
|
+
this.name = 'NotFoundError';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The database query failed.
|
|
64
|
+
*/
|
|
65
|
+
export class QueryError extends TableCraftError {
|
|
66
|
+
constructor(message, details) {
|
|
67
|
+
super(message, 'QUERY_ERROR', 500, details);
|
|
68
|
+
this.name = 'QueryError';
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A feature is not supported on the current database dialect.
|
|
73
|
+
*/
|
|
74
|
+
export class DialectError extends TableCraftError {
|
|
75
|
+
constructor(feature, dialect) {
|
|
76
|
+
super(`'${feature}' is not supported on ${dialect}. Use PostgreSQL or write a raw query.`, 'DIALECT_ERROR', 400, { feature, dialect });
|
|
77
|
+
this.name = 'DialectError';
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,OAAO,CAAW;IAElC,YAAY,OAAe,EAAE,IAAY,EAAE,aAAqB,GAAG,EAAE,OAAiB;QACpF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,eAAe;IAC9C,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C,YAAY,KAAa,EAAE,MAAc;QACvC,KAAK,CAAC,UAAU,KAAK,MAAM,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IAClD,YAAY,KAAa,EAAE,QAAgB,EAAE,QAAiB;QAC5D,KAAK,CACH,sBAAsB,KAAK,eAAe,QAAQ,SAAS,OAAO,QAAQ,EAAE,EAC5E,kBAAkB,EAClB,GAAG,EACH,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAC9B,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACpD,YAAY,QAAgB,EAAE,MAAe;QAC3C,KAAK,CACH,qBAAqB,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9D,eAAe,EACf,GAAG,EACH,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,eAAe;IAChD,YAAY,QAAgB;QAC1B,KAAK,CAAC,aAAa,QAAQ,aAAa,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,eAAe;IAC/C,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CACH,IAAI,OAAO,yBAAyB,OAAO,wCAAwC,EACnF,eAAe,EACf,GAAG,EACH,EAAE,OAAO,EAAE,OAAO,EAAE,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export * from './types/table';
|
|
2
|
+
export * from './types/engine';
|
|
3
|
+
export * from './errors';
|
|
4
|
+
export { defineTable, TableDefinitionBuilder } from './define';
|
|
5
|
+
export type { QuickOptions, RuntimeExtensions } from './define';
|
|
6
|
+
export { createTableEngine, createEngines } from './engine';
|
|
7
|
+
export type { ConfigInput } from './engine';
|
|
8
|
+
export * from './core/validator';
|
|
9
|
+
export * from './core/inputValidator';
|
|
10
|
+
export * from './core/queryBuilder';
|
|
11
|
+
export * from './core/filterBuilder';
|
|
12
|
+
export * from './core/filterGroupBuilder';
|
|
13
|
+
export * from './core/searchBuilder';
|
|
14
|
+
export * from './core/sortBuilder';
|
|
15
|
+
export * from './core/paginationBuilder';
|
|
16
|
+
export * from './core/cursorPagination';
|
|
17
|
+
export * from './core/aggregationBuilder';
|
|
18
|
+
export * from './core/subqueryBuilder';
|
|
19
|
+
export * from './core/softDelete';
|
|
20
|
+
export * from './core/groupByBuilder';
|
|
21
|
+
export * from './core/relationBuilder';
|
|
22
|
+
export * from './core/recursiveBuilder';
|
|
23
|
+
export * from './core/fieldSelector';
|
|
24
|
+
export * from './core/dialect';
|
|
25
|
+
export * from './core/datePresets';
|
|
26
|
+
export * from './core/metadataBuilder';
|
|
27
|
+
export * from './core/roleFilter';
|
|
28
|
+
export * from './utils/operators';
|
|
29
|
+
export * from './utils/requestParser';
|
|
30
|
+
export * from './utils/responseFormatter';
|
|
31
|
+
export * from './utils/export';
|
|
32
|
+
export * from './utils/codegen';
|
|
33
|
+
export * from './utils/openapi';
|
|
34
|
+
export * from './utils/adapterUtils';
|
|
35
|
+
export * from './utils/introspect';
|
|
36
|
+
export * from './utils/typedSql';
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,UAAU,CAAC;AAGzB,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Types
|
|
2
|
+
export * from './types/table';
|
|
3
|
+
export * from './types/engine';
|
|
4
|
+
// Errors
|
|
5
|
+
export * from './errors';
|
|
6
|
+
// Main API
|
|
7
|
+
export { defineTable, TableDefinitionBuilder } from './define';
|
|
8
|
+
// Engine factory
|
|
9
|
+
export { createTableEngine, createEngines } from './engine';
|
|
10
|
+
// Core builders
|
|
11
|
+
export * from './core/validator';
|
|
12
|
+
export * from './core/inputValidator';
|
|
13
|
+
export * from './core/queryBuilder';
|
|
14
|
+
export * from './core/filterBuilder';
|
|
15
|
+
export * from './core/filterGroupBuilder';
|
|
16
|
+
export * from './core/searchBuilder';
|
|
17
|
+
export * from './core/sortBuilder';
|
|
18
|
+
export * from './core/paginationBuilder';
|
|
19
|
+
export * from './core/cursorPagination';
|
|
20
|
+
export * from './core/aggregationBuilder';
|
|
21
|
+
export * from './core/subqueryBuilder';
|
|
22
|
+
export * from './core/softDelete';
|
|
23
|
+
export * from './core/groupByBuilder';
|
|
24
|
+
export * from './core/relationBuilder';
|
|
25
|
+
export * from './core/recursiveBuilder';
|
|
26
|
+
export * from './core/fieldSelector';
|
|
27
|
+
export * from './core/dialect';
|
|
28
|
+
export * from './core/datePresets';
|
|
29
|
+
export * from './core/metadataBuilder';
|
|
30
|
+
export * from './core/roleFilter';
|
|
31
|
+
// Utilities
|
|
32
|
+
export * from './utils/operators';
|
|
33
|
+
export * from './utils/requestParser';
|
|
34
|
+
export * from './utils/responseFormatter';
|
|
35
|
+
export * from './utils/export';
|
|
36
|
+
export * from './utils/codegen';
|
|
37
|
+
export * from './utils/openapi';
|
|
38
|
+
export * from './utils/adapterUtils';
|
|
39
|
+
export * from './utils/introspect';
|
|
40
|
+
export * from './utils/typedSql';
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAE/B,SAAS;AACT,cAAc,UAAU,CAAC;AAEzB,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAG/D,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG5D,gBAAgB;AAChB,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAElC,YAAY;AACZ,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Operator, TableConfig } from './table';
|
|
2
|
+
export interface FilterParam {
|
|
3
|
+
operator: Operator;
|
|
4
|
+
value: unknown;
|
|
5
|
+
}
|
|
6
|
+
export interface SortParam {
|
|
7
|
+
field: string;
|
|
8
|
+
order: 'asc' | 'desc';
|
|
9
|
+
}
|
|
10
|
+
export interface EngineParams {
|
|
11
|
+
filters?: Record<string, FilterParam>;
|
|
12
|
+
search?: string;
|
|
13
|
+
sort?: SortParam[];
|
|
14
|
+
page?: number;
|
|
15
|
+
pageSize?: number;
|
|
16
|
+
/** Cursor for cursor-based pagination */
|
|
17
|
+
cursor?: string;
|
|
18
|
+
/** Select specific fields: ?select=id,name,email */
|
|
19
|
+
select?: string[];
|
|
20
|
+
/** DISTINCT query */
|
|
21
|
+
distinct?: boolean;
|
|
22
|
+
export?: 'csv' | 'json';
|
|
23
|
+
includeDeleted?: boolean;
|
|
24
|
+
dateRange?: {
|
|
25
|
+
from?: string;
|
|
26
|
+
to?: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface EngineMeta {
|
|
30
|
+
total: number | null;
|
|
31
|
+
page: number;
|
|
32
|
+
pageSize: number;
|
|
33
|
+
totalPages: number | null;
|
|
34
|
+
/** Cursor for next page (cursor-based pagination) */
|
|
35
|
+
nextCursor?: string | null;
|
|
36
|
+
/** Whether count is exact or estimated */
|
|
37
|
+
countMode?: 'exact' | 'estimated' | 'none';
|
|
38
|
+
}
|
|
39
|
+
export interface EngineResult<T = Record<string, unknown>> {
|
|
40
|
+
data: T[];
|
|
41
|
+
meta: EngineMeta;
|
|
42
|
+
aggregations?: Record<string, number>;
|
|
43
|
+
}
|
|
44
|
+
export interface GroupedResult {
|
|
45
|
+
data: Record<string, unknown>[];
|
|
46
|
+
meta: {
|
|
47
|
+
total: number;
|
|
48
|
+
};
|
|
49
|
+
aggregations: Record<string, number>;
|
|
50
|
+
}
|
|
51
|
+
export interface EngineContext {
|
|
52
|
+
tenantId?: string | number;
|
|
53
|
+
user?: {
|
|
54
|
+
id: string | number;
|
|
55
|
+
roles?: string[];
|
|
56
|
+
permissions?: string[];
|
|
57
|
+
};
|
|
58
|
+
[key: string]: unknown;
|
|
59
|
+
}
|
|
60
|
+
export interface EngineHooks {
|
|
61
|
+
/** Called before building the query. Can modify params. */
|
|
62
|
+
beforeQuery?: (params: EngineParams, context: EngineContext) => EngineParams | Promise<EngineParams>;
|
|
63
|
+
/** Called after query execution, before formatting. Can modify raw data. */
|
|
64
|
+
afterQuery?: (data: Record<string, unknown>[], params: EngineParams, context: EngineContext) => Record<string, unknown>[] | Promise<Record<string, unknown>[]>;
|
|
65
|
+
/** Called on any error. Can transform or rethrow. */
|
|
66
|
+
onError?: (error: Error, params: EngineParams, context: EngineContext) => Error | Promise<Error>;
|
|
67
|
+
}
|
|
68
|
+
export interface QueryDebugInfo {
|
|
69
|
+
sql: string;
|
|
70
|
+
params: unknown[];
|
|
71
|
+
duration: number;
|
|
72
|
+
timestamp: number;
|
|
73
|
+
}
|
|
74
|
+
import { TableMetadata } from '../core/metadataBuilder';
|
|
75
|
+
export type CountMode = 'exact' | 'estimated' | 'none';
|
|
76
|
+
export interface TableEngine {
|
|
77
|
+
query(params?: EngineParams, context?: EngineContext): Promise<EngineResult>;
|
|
78
|
+
queryGrouped(params?: EngineParams, context?: EngineContext): Promise<GroupedResult>;
|
|
79
|
+
queryRecursive(params?: EngineParams, context?: EngineContext): Promise<EngineResult>;
|
|
80
|
+
count(params?: EngineParams, context?: EngineContext): Promise<number>;
|
|
81
|
+
exportData(params?: EngineParams, context?: EngineContext): Promise<string>;
|
|
82
|
+
/** Returns the built SQL without executing — for debugging */
|
|
83
|
+
explain(params?: EngineParams, context?: EngineContext): Promise<QueryDebugInfo>;
|
|
84
|
+
getMetadata(context?: EngineContext): TableMetadata;
|
|
85
|
+
getConfig(): TableConfig;
|
|
86
|
+
}
|
|
87
|
+
export interface EngineOptions {
|
|
88
|
+
db: unknown;
|
|
89
|
+
schema: Record<string, unknown>;
|
|
90
|
+
configs: TableConfig[] | Record<string, TableConfig>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/types/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/types/engine.ts"],"names":[],"mappings":""}
|