tina4-nodejs 3.10.90 → 3.10.92
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/package.json +1 -1
- package/packages/core/src/ai.ts +1 -1
- package/packages/core/src/api.ts +6 -6
- package/packages/core/src/auth.ts +28 -15
- package/packages/core/src/cache.ts +9 -0
- package/packages/core/src/devAdmin.ts +85 -7
- package/packages/core/src/devMailbox.ts +21 -21
- package/packages/core/src/fakeData.ts +24 -14
- package/packages/core/src/graphql.ts +37 -1
- package/packages/core/src/i18n.ts +1 -1
- package/packages/core/src/index.ts +6 -6
- package/packages/core/src/mcp.ts +3 -0
- package/packages/core/src/messenger.ts +52 -4
- package/packages/core/src/middleware.ts +61 -0
- package/packages/core/src/queue.ts +103 -30
- package/packages/core/src/queueBackends/liteBackend.ts +43 -0
- package/packages/core/src/rateLimiter.ts +88 -1
- package/packages/core/src/request.ts +24 -1
- package/packages/core/src/response.ts +54 -10
- package/packages/core/src/router.ts +32 -14
- package/packages/core/src/scss.ts +44 -2
- package/packages/core/src/server.ts +26 -4
- package/packages/core/src/service.ts +7 -0
- package/packages/core/src/session.ts +4 -4
- package/packages/core/src/testClient.ts +2 -2
- package/packages/core/src/testing.ts +6 -6
- package/packages/core/src/types.ts +8 -1
- package/packages/core/src/watcher.ts +66 -0
- package/packages/core/src/websocket.ts +24 -3
- package/packages/core/src/websocketConnection.ts +4 -0
- package/packages/core/src/wsdl.ts +12 -12
- package/packages/frond/src/engine.ts +6 -0
- package/packages/orm/src/adapters/firebird.ts +2 -2
- package/packages/orm/src/adapters/mssql.ts +2 -2
- package/packages/orm/src/adapters/mysql.ts +2 -2
- package/packages/orm/src/adapters/postgres.ts +2 -2
- package/packages/orm/src/adapters/sqlite.ts +3 -3
- package/packages/orm/src/autoCrud.ts +117 -74
- package/packages/orm/src/baseModel.ts +44 -7
- package/packages/orm/src/database.ts +58 -15
- package/packages/orm/src/databaseResult.ts +5 -0
- package/packages/orm/src/fakeData.ts +1 -11
- package/packages/orm/src/index.ts +1 -1
- package/packages/orm/src/migration.ts +78 -5
- package/packages/orm/src/queryBuilder.ts +2 -2
- package/packages/orm/src/sqlTranslation.ts +20 -3
- package/packages/orm/src/types.ts +2 -2
- package/packages/swagger/src/generator.ts +2 -2
- package/packages/swagger/src/index.ts +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
5
|
* // Standalone
|
|
6
|
-
* const result = QueryBuilder.
|
|
6
|
+
* const result = QueryBuilder.fromTable("users", db)
|
|
7
7
|
* .select("id", "name")
|
|
8
8
|
* .where("active = ?", [1])
|
|
9
9
|
* .orderBy("name ASC")
|
|
@@ -49,7 +49,7 @@ export class QueryBuilder {
|
|
|
49
49
|
* @param db - Optional database adapter.
|
|
50
50
|
* @returns A new QueryBuilder instance.
|
|
51
51
|
*/
|
|
52
|
-
static
|
|
52
|
+
static fromTable(tableName: string, db?: DatabaseAdapter): QueryBuilder {
|
|
53
53
|
return new QueryBuilder(tableName, db);
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -163,6 +163,7 @@ export class SQLTranslator {
|
|
|
163
163
|
interface CacheEntry<T> {
|
|
164
164
|
value: T;
|
|
165
165
|
expiresAt: number;
|
|
166
|
+
tags: string[];
|
|
166
167
|
}
|
|
167
168
|
|
|
168
169
|
/**
|
|
@@ -201,11 +202,12 @@ export class QueryCache {
|
|
|
201
202
|
}
|
|
202
203
|
|
|
203
204
|
/**
|
|
204
|
-
* Set a cached value with optional TTL (seconds)
|
|
205
|
+
* Set a cached value with optional TTL (seconds) and tags for grouped
|
|
206
|
+
* invalidation via clearTag().
|
|
205
207
|
*/
|
|
206
|
-
set<T>(key: string, value: T, ttl?: number): void {
|
|
208
|
+
set<T>(key: string, value: T, ttl?: number, tags: string[] = []): void {
|
|
207
209
|
// Evict oldest entry if at max size
|
|
208
|
-
if (this.store.size >= this.maxSize) {
|
|
210
|
+
if (this.store.size >= this.maxSize && !this.store.has(key)) {
|
|
209
211
|
const firstKey = this.store.keys().next().value;
|
|
210
212
|
if (firstKey !== undefined) this.store.delete(firstKey);
|
|
211
213
|
}
|
|
@@ -213,9 +215,24 @@ export class QueryCache {
|
|
|
213
215
|
this.store.set(key, {
|
|
214
216
|
value,
|
|
215
217
|
expiresAt: Date.now() + (ttl ?? this.defaultTtl) * 1000,
|
|
218
|
+
tags,
|
|
216
219
|
});
|
|
217
220
|
}
|
|
218
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Remove all entries that carry the given tag. Returns the number removed.
|
|
224
|
+
*/
|
|
225
|
+
clearTag(tag: string): number {
|
|
226
|
+
let removed = 0;
|
|
227
|
+
for (const [key, entry] of this.store) {
|
|
228
|
+
if (entry.tags.includes(tag)) {
|
|
229
|
+
this.store.delete(key);
|
|
230
|
+
removed++;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return removed;
|
|
234
|
+
}
|
|
235
|
+
|
|
219
236
|
/**
|
|
220
237
|
* Check if a key exists and is not expired.
|
|
221
238
|
*/
|
|
@@ -69,10 +69,10 @@ export interface DatabaseAdapter {
|
|
|
69
69
|
insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): DatabaseResult;
|
|
70
70
|
|
|
71
71
|
/** Update rows in a table matching filter, returns affected row count. */
|
|
72
|
-
update(table: string, data: Record<string, unknown>, filter: Record<string, unknown
|
|
72
|
+
update(table: string, data: Record<string, unknown>, filter: Record<string, unknown>, params?: unknown[]): DatabaseResult;
|
|
73
73
|
|
|
74
74
|
/** Delete rows from a table matching filter (object, string WHERE, or array of objects). */
|
|
75
|
-
delete(table: string, filter: Record<string, unknown> | string | Record<string, unknown>[]): DatabaseResult;
|
|
75
|
+
delete(table: string, filter: Record<string, unknown> | string | Record<string, unknown>[], params?: unknown[]): DatabaseResult;
|
|
76
76
|
|
|
77
77
|
/** Start a transaction. */
|
|
78
78
|
startTransaction(): void;
|
|
@@ -8,9 +8,9 @@ interface OpenAPISpec {
|
|
|
8
8
|
components?: { schemas?: Record<string, unknown> };
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export function
|
|
11
|
+
export function generate(
|
|
12
12
|
routes: RouteDefinition[],
|
|
13
|
-
models: ModelDefinition[]
|
|
13
|
+
models: ModelDefinition[] = []
|
|
14
14
|
): OpenAPISpec {
|
|
15
15
|
const spec: OpenAPISpec = {
|
|
16
16
|
openapi: "3.0.3",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { generate } from "./generator.js";
|
|
2
2
|
export { createSwaggerRoutes } from "./ui.js";
|