tina4-nodejs 3.13.92 → 3.13.95
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/CLAUDE.md +170 -28
- package/README.md +2 -2
- package/package.json +13 -9
- package/packages/cli/dist/bin.js +33126 -30055
- package/packages/cli/src/commands/metrics.ts +17 -11
- package/packages/cli/src/commands/serve.ts +10 -9
- package/packages/core/dist/index.js +33062 -29908
- package/packages/core/src/ai.ts +7 -1
- package/packages/core/src/auth.ts +191 -39
- package/packages/core/src/background.ts +19 -19
- package/packages/core/src/cache.ts +492 -49
- package/packages/core/src/devAdmin.ts +79 -32
- package/packages/core/src/devMailbox.ts +20 -44
- package/packages/core/src/dispatchPipeline.ts +285 -0
- package/packages/core/src/dotenv.ts +185 -40
- package/packages/core/src/index.ts +7 -6
- package/packages/core/src/logger.ts +257 -36
- package/packages/core/src/mcp.ts +1 -1
- package/packages/core/src/messenger.ts +81 -13
- package/packages/core/src/metrics.ts +199 -961
- package/packages/core/src/middleware.ts +390 -123
- package/packages/core/src/queue.ts +188 -32
- package/packages/core/src/queueBackends/kafkaBackend.ts +109 -13
- package/packages/core/src/queueBackends/liteBackend.ts +13 -0
- package/packages/core/src/queueBackends/mongoBackend.ts +101 -9
- package/packages/core/src/queueBackends/rabbitmqBackend.ts +22 -4
- package/packages/core/src/rateLimiter.ts +10 -5
- package/packages/core/src/request.ts +6 -9
- package/packages/core/src/response.ts +46 -1
- package/packages/core/src/router.ts +29 -4
- package/packages/core/src/server.ts +751 -414
- package/packages/core/src/session.ts +244 -27
- package/packages/core/src/sessionHandlers/childError.ts +72 -0
- package/packages/core/src/sessionHandlers/databaseHandler.ts +338 -48
- package/packages/core/src/sessionHandlers/memcachedHandler.ts +181 -0
- package/packages/core/src/sessionHandlers/mongoClient.ts +293 -202
- package/packages/core/src/sessionHandlers/mongoHandler.ts +88 -8
- package/packages/core/src/sessionHandlers/respClient.ts +16 -143
- package/packages/core/src/sessionHandlers/sqlClient.ts +290 -0
- package/packages/core/src/sessionHandlers/syncBridge.ts +190 -0
- package/packages/core/src/sessionHandlers/syncSocket.ts +236 -0
- package/packages/core/src/testClient.ts +18 -5
- package/packages/core/src/trustedProxy.ts +249 -0
- package/packages/core/src/types.ts +29 -5
- package/packages/core/src/websocket.ts +66 -0
- package/packages/frond/dist/index.js +74 -31
- package/packages/frond/src/engine.ts +99 -33
- package/packages/orm/dist/index.js +26554 -23400
- package/packages/orm/src/adapters/firebird.ts +183 -56
- package/packages/orm/src/adapters/mongodb.ts +25 -4
- package/packages/orm/src/adapters/mssql.ts +114 -29
- package/packages/orm/src/adapters/mysql.ts +103 -40
- package/packages/orm/src/adapters/odbc.ts +44 -21
- package/packages/orm/src/adapters/postgres.ts +118 -26
- package/packages/orm/src/adapters/sqlDialect.ts +120 -0
- package/packages/orm/src/adapters/sqlite.ts +64 -25
- package/packages/orm/src/baseModel.ts +135 -40
- package/packages/orm/src/cachedDatabase.ts +43 -19
- package/packages/orm/src/connectTimeout.ts +265 -0
- package/packages/orm/src/database.ts +338 -198
- package/packages/orm/src/databaseResult.ts +65 -13
- package/packages/orm/src/databaseUrl.ts +484 -0
- package/packages/orm/src/docstore.ts +386 -145
- package/packages/orm/src/index.ts +13 -3
- package/packages/orm/src/migration.ts +18 -3
- package/packages/orm/src/queryBuilder.ts +38 -4
- package/packages/orm/src/sqlTranslator.ts +310 -4
- package/packages/orm/src/types.ts +15 -4
- package/types/cli/src/bin.d.ts +92 -0
- package/types/cli/src/commands/build.d.ts +2 -0
- package/types/cli/src/commands/generate.d.ts +47 -0
- package/types/cli/src/commands/init.d.ts +1 -0
- package/types/cli/src/commands/metrics.d.ts +6 -0
- package/types/cli/src/commands/migrate.d.ts +1 -0
- package/types/cli/src/commands/migrateCreate.d.ts +1 -0
- package/types/cli/src/commands/migrateRollback.d.ts +1 -0
- package/types/cli/src/commands/migrateStatus.d.ts +1 -0
- package/types/cli/src/commands/queue.d.ts +20 -0
- package/types/cli/src/commands/routes.d.ts +1 -0
- package/types/cli/src/commands/seed.d.ts +1 -0
- package/types/cli/src/commands/serve.d.ts +6 -0
- package/types/cli/src/commands/test.d.ts +1 -0
- package/types/core/src/ai.d.ts +64 -0
- package/types/core/src/api.d.ts +262 -0
- package/types/core/src/auth.d.ts +177 -0
- package/types/core/src/authGate.d.ts +20 -0
- package/types/core/src/background.d.ts +34 -0
- package/types/core/src/cache.d.ts +163 -0
- package/types/core/src/constants.d.ts +38 -0
- package/types/core/src/container.d.ts +44 -0
- package/types/core/src/context/chunker.d.ts +31 -0
- package/types/core/src/context/index.d.ts +93 -0
- package/types/core/src/devAdmin.d.ts +179 -0
- package/types/core/src/devMailbox.d.ts +54 -0
- package/types/core/src/dispatchPipeline.d.ts +117 -0
- package/types/core/src/docs.d.ts +141 -0
- package/types/core/src/docsAutoDiscovery.d.ts +6 -0
- package/types/core/src/dotenv.d.ts +87 -0
- package/types/core/src/env.d.ts +28 -0
- package/types/core/src/errorOverlay.d.ts +36 -0
- package/types/core/src/events.d.ts +75 -0
- package/types/core/src/fakeData.d.ts +55 -0
- package/types/core/src/feedback.d.ts +90 -0
- package/types/core/src/graphql.d.ts +207 -0
- package/types/core/src/health.d.ts +22 -0
- package/types/core/src/htmlElement.d.ts +75 -0
- package/types/core/src/i18n.d.ts +37 -0
- package/types/core/src/index.d.ts +92 -0
- package/types/core/src/job.d.ts +39 -0
- package/types/core/src/logger.d.ts +200 -0
- package/types/core/src/mcp.d.ts +248 -0
- package/types/core/src/messenger.d.ts +191 -0
- package/types/core/src/metrics.d.ts +41 -0
- package/types/core/src/middleware.d.ts +330 -0
- package/types/core/src/mqtt.d.ts +257 -0
- package/types/core/src/mqttMessage.d.ts +67 -0
- package/types/core/src/plan.d.ts +96 -0
- package/types/core/src/projectIndex.d.ts +56 -0
- package/types/core/src/queue.d.ts +268 -0
- package/types/core/src/queueBackends/kafkaBackend.d.ts +117 -0
- package/types/core/src/queueBackends/liteBackend.d.ts +128 -0
- package/types/core/src/queueBackends/mongoBackend.d.ts +119 -0
- package/types/core/src/queueBackends/rabbitmqBackend.d.ts +55 -0
- package/types/core/src/rateLimiter.d.ts +49 -0
- package/types/core/src/request.d.ts +25 -0
- package/types/core/src/response.d.ts +28 -0
- package/types/core/src/routeDiscovery.d.ts +12 -0
- package/types/core/src/router.d.ts +366 -0
- package/types/core/src/scss.d.ts +19 -0
- package/types/core/src/server.d.ts +146 -0
- package/types/core/src/service.d.ts +115 -0
- package/types/core/src/session.d.ts +341 -0
- package/types/core/src/sessionHandlers/childError.d.ts +34 -0
- package/types/core/src/sessionHandlers/databaseHandler.d.ts +97 -0
- package/types/core/src/sessionHandlers/memcachedHandler.d.ts +60 -0
- package/types/core/src/sessionHandlers/mongoClient.d.ts +35 -0
- package/types/core/src/sessionHandlers/mongoHandler.d.ts +109 -0
- package/types/core/src/sessionHandlers/respClient.d.ts +22 -0
- package/types/core/src/sessionHandlers/sqlClient.d.ts +39 -0
- package/types/core/src/sessionHandlers/syncBridge.d.ts +91 -0
- package/types/core/src/sessionHandlers/syncSocket.d.ts +49 -0
- package/types/core/src/sessionHandlers/valkeyHandler.d.ts +65 -0
- package/types/core/src/static.d.ts +2 -0
- package/types/core/src/test.d.ts +94 -0
- package/types/core/src/testClient.d.ts +36 -0
- package/types/core/src/testing.d.ts +58 -0
- package/types/core/src/trustedProxy.d.ts +44 -0
- package/types/core/src/types.d.ts +242 -0
- package/types/core/src/validator.d.ts +52 -0
- package/types/core/src/websocket.d.ts +402 -0
- package/types/core/src/websocketBackplane.d.ts +166 -0
- package/types/core/src/websocketConnection.d.ts +54 -0
- package/types/core/src/wsdl.d.ts +101 -0
- package/types/frond/src/engine.d.ts +263 -0
- package/types/frond/src/index.d.ts +2 -0
- package/types/orm/src/adapters/firebird.d.ts +183 -0
- package/types/orm/src/adapters/mongodb.d.ts +81 -0
- package/types/orm/src/adapters/mssql.d.ts +77 -0
- package/types/orm/src/adapters/mysql.d.ts +67 -0
- package/types/orm/src/adapters/odbc.d.ts +94 -0
- package/types/orm/src/adapters/postgres.d.ts +86 -0
- package/types/orm/src/adapters/sqlDialect.d.ts +71 -0
- package/types/orm/src/adapters/sqlite.d.ts +68 -0
- package/types/orm/src/autoCrud.d.ts +73 -0
- package/types/orm/src/baseModel.d.ts +427 -0
- package/types/orm/src/cachedDatabase.d.ts +190 -0
- package/types/orm/src/connectTimeout.d.ts +100 -0
- package/types/orm/src/database.d.ts +655 -0
- package/types/orm/src/databaseResult.d.ts +109 -0
- package/types/orm/src/databaseUrl.d.ts +125 -0
- package/types/orm/src/docstore.d.ts +241 -0
- package/types/orm/src/fakeData.d.ts +22 -0
- package/types/orm/src/index.d.ts +43 -0
- package/types/orm/src/migration.d.ts +275 -0
- package/types/orm/src/model.d.ts +7 -0
- package/types/orm/src/query.d.ts +14 -0
- package/types/orm/src/queryBuilder.d.ts +193 -0
- package/types/orm/src/realtime/index.d.ts +7 -0
- package/types/orm/src/realtime/models/attachment.d.ts +43 -0
- package/types/orm/src/realtime/models/channel.d.ts +32 -0
- package/types/orm/src/realtime/models/channelMember.d.ts +32 -0
- package/types/orm/src/realtime/models/message.d.ts +36 -0
- package/types/orm/src/realtime/models/workspace.d.ts +26 -0
- package/types/orm/src/realtime/realtime.d.ts +24 -0
- package/types/orm/src/realtime/storage.d.ts +61 -0
- package/types/orm/src/seeder.d.ts +118 -0
- package/types/orm/src/sqlTranslator.d.ts +258 -0
- package/types/orm/src/types.d.ts +148 -0
- package/types/orm/src/validation.d.ts +6 -0
- package/types/swagger/src/generator.d.ts +46 -0
- package/types/swagger/src/index.d.ts +2 -0
- package/types/swagger/src/ui.d.ts +11 -0
- package/packages/core/src/sessionHandlers/redisHandler.ts +0 -206
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/** Seconds. Long enough for a cold cross-region connect, short enough to page. */
|
|
2
|
+
export declare const DEFAULT_DATABASE_CONNECT_TIMEOUT_SECONDS = 10;
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the connect budget in MILLISECONDS, or `null` when the bound is
|
|
5
|
+
* disabled.
|
|
6
|
+
*
|
|
7
|
+
* Milliseconds because every consumer needs them: `setTimeout` and all four
|
|
8
|
+
* driver knobs are in ms. Seconds are the operator-facing unit, so the variable
|
|
9
|
+
* is read as seconds and converted once, here.
|
|
10
|
+
*
|
|
11
|
+
* Call this ONCE per connect and pass the result down - it is the only resolver,
|
|
12
|
+
* so calling it twice would warn twice about one typo.
|
|
13
|
+
*/
|
|
14
|
+
export declare function connectTimeoutMillis(): number | null;
|
|
15
|
+
/**
|
|
16
|
+
* Clock slack when deciding whether a failed connect was OUR bound expiring.
|
|
17
|
+
*
|
|
18
|
+
* THE DECISION IS MADE BY ELAPSED TIME, NEVER BY MATCHING THE DRIVER'S TEXT.
|
|
19
|
+
* The four clients word an expiry four different ways - pg `timeout expired`,
|
|
20
|
+
* mysql2 `connect ETIMEDOUT`, tedious `Failed to connect to ... in 2000ms`,
|
|
21
|
+
* Mongo `Server selection timed out after 2000 ms` - and a marker table would
|
|
22
|
+
* drift the moment any of them reworded, then MISS. A missed timeout is the
|
|
23
|
+
* whole defect this file exists to prevent, so nothing here reads the message.
|
|
24
|
+
*
|
|
25
|
+
* WHY 50ms, AND WHY NOT ZERO. Python and PHP use no tolerance at all, PHP having
|
|
26
|
+
* measured its four C clients OVERSHOOTING their deadline by ~3ms at a 3s bound -
|
|
27
|
+
* a client that measures its own elapsed time can never report early. Node's
|
|
28
|
+
* knobs are not those: all four are plain JS `setTimeout` calls (pg `client.js`,
|
|
29
|
+
* mysql2 `base/connection.js`, tedious `connection.js`, and the Mongo driver's
|
|
30
|
+
* selection loop), and libuv's loop time is coarse, so a Node timer CAN fire
|
|
31
|
+
* before `performance.now()` agrees the budget has passed. MEASURED, 60 rounds
|
|
32
|
+
* at a 200ms budget:
|
|
33
|
+
*
|
|
34
|
+
* Linux x64, Node v24.18.0 earliest -0.7125ms (fires EARLY)
|
|
35
|
+
* darwin arm64, Node v24.9.0 earliest +0.0872ms (never early)
|
|
36
|
+
*
|
|
37
|
+
* Zero would therefore be a real miss on Linux. 50ms is a ~70x margin on the
|
|
38
|
+
* measured worst case, and still 0.5% of the 10s default. Ruby's 250ms is for a
|
|
39
|
+
* different problem - libpq's `connect_timeout` is INTEGER SECONDS and reads a
|
|
40
|
+
* 10s bound back as 9.998s - which no Node client has.
|
|
41
|
+
*
|
|
42
|
+
* It does NOT inflate the operator's N: it only widens what COUNTS as the bound
|
|
43
|
+
* expiring, never how long anything waits. It errs deliberately: over-translating
|
|
44
|
+
* a genuine fast failure that lands within 50ms of the bound still shows the
|
|
45
|
+
* operator the driver's real error (`Driver reported:`, plus `cause`), whereas
|
|
46
|
+
* under-translating hands them a bare driver message naming no variable.
|
|
47
|
+
*/
|
|
48
|
+
export declare const CONNECT_TIMEOUT_TOLERANCE_MS = 50;
|
|
49
|
+
/**
|
|
50
|
+
* The value for a driver's own connect-timeout option, from the Tina4 budget.
|
|
51
|
+
* `null` in, `null` out - a disabled bound sets no driver option at all.
|
|
52
|
+
*
|
|
53
|
+
* ROUNDED UP, AND NEVER TO 0. Up, so the driver's timer can never expire before
|
|
54
|
+
* our clock has reached the bound - that ordering is the whole basis for the
|
|
55
|
+
* elapsed-time test in `withConnectTimeout`, and rounding down would break it.
|
|
56
|
+
* Never 0, because three of the four knobs read 0 as WAIT FOREVER: pg does
|
|
57
|
+
* `connectionTimeoutMillis || 0` then `if (> 0)`, mysql2 does
|
|
58
|
+
* `if (this.config.connectTimeout)`, and libpq (the same trap Python and Ruby
|
|
59
|
+
* name) treats `connect_timeout=0` as no limit. A sub-millisecond bound must
|
|
60
|
+
* therefore floor at 1ms rather than silently disabling the bound being set.
|
|
61
|
+
*/
|
|
62
|
+
export declare function driverConnectTimeoutMillis(budgetMs: number | null): number | null;
|
|
63
|
+
/**
|
|
64
|
+
* Best-effort host/port for the DIAGNOSTIC, from either a config object or a
|
|
65
|
+
* connection URL. Never used to connect - the adapter has already done that with
|
|
66
|
+
* its own parsing, and this must not become a second, divergent parser that
|
|
67
|
+
* decides where anything dials.
|
|
68
|
+
*/
|
|
69
|
+
export declare function connectTarget(config: {
|
|
70
|
+
host?: string;
|
|
71
|
+
port?: number;
|
|
72
|
+
} | string, defaultPort: number): {
|
|
73
|
+
host: string;
|
|
74
|
+
port: number | string;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Bound a driver connect, and name the bound when it expires.
|
|
78
|
+
*
|
|
79
|
+
* @param attempt a THUNK that starts the driver's connect. It is a thunk, not a
|
|
80
|
+
* promise, so OUR CLOCK STARTS FIRST - everything that touches
|
|
81
|
+
* the driver must run inside it. That ordering is load-bearing:
|
|
82
|
+
* the driver arms its own timer somewhere in here (mysql2 arms
|
|
83
|
+
* its at the END OF ITS CONSTRUCTOR, not in `connect()`), and
|
|
84
|
+
* only by starting first can we know that the driver's timer
|
|
85
|
+
* cannot expire before `elapsed` has reached the bound.
|
|
86
|
+
* @param budgetMs from `connectTimeoutMillis()`; `null` runs `attempt` untouched
|
|
87
|
+
* @param host named in the error - an operator needs to know WHICH server hung
|
|
88
|
+
* @param port named in the error alongside the host
|
|
89
|
+
* @param abandon called if the driver answers AFTER we gave up, with whatever it
|
|
90
|
+
* produced. Nobody will ever use that connection, so the adapter
|
|
91
|
+
* closes it here rather than leaking a socket for the life of the
|
|
92
|
+
* process - a connect that is retried every 10s would otherwise
|
|
93
|
+
* accumulate one abandoned connection per attempt, forever.
|
|
94
|
+
*
|
|
95
|
+
* TWO WAYS OUT, both wearing the same message. Normally the DRIVER's timer fires
|
|
96
|
+
* first (it was armed first) and we TRANSLATE its failure; where the driver has
|
|
97
|
+
* no knob, or its knob did not cover the phase that hung, our own timer fires as
|
|
98
|
+
* the backstop and there is no driver diagnosis to report.
|
|
99
|
+
*/
|
|
100
|
+
export declare function withConnectTimeout<T>(attempt: () => Promise<T>, budgetMs: number | null, host: string, port: number | string, abandon?: (arrived: T) => void): Promise<T>;
|