theokit 0.71.0 → 0.72.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/{actions-virtual-module-2SM6YMTM.js → actions-virtual-module-EAKYEMGF.js} +4 -4
- package/dist/{actions-virtual-module-5LRBP6YK.js → actions-virtual-module-OHENNMQG.js} +6 -6
- package/dist/adapters/agent-mount.js +3 -3
- package/dist/{agent-4FXJXZFD.js → agent-VJTZ4DQ7.js} +2 -2
- package/dist/{app-typed-client-LIIPHLO6.js → app-typed-client-ILLQYTXP.js} +6 -6
- package/dist/{app-typed-client-JFPV4YLS.js → app-typed-client-LHH77QDB.js} +4 -4
- package/dist/{aws-lambda-MUGK4WNZ.js → aws-lambda-7AZNJGWU.js} +6 -4
- package/dist/{aws-lambda-MUGK4WNZ.js.map → aws-lambda-7AZNJGWU.js.map} +1 -1
- package/dist/{build-KCIH3HI6.js → build-23QF5FNQ.js} +7 -7
- package/dist/build-23QF5FNQ.js.map +1 -0
- package/dist/{bun-JWZ2UOLJ.js → bun-NKVHOFSJ.js} +6 -4
- package/dist/{bun-JWZ2UOLJ.js.map → bun-NKVHOFSJ.js.map} +1 -1
- package/dist/{chunk-KOG5K26V.js → chunk-2Z7TANA4.js} +2 -2
- package/dist/{chunk-V6VARIR3.js → chunk-4EQEJ4PH.js} +9 -9
- package/dist/{chunk-3NAKOWTX.js → chunk-6U67SO5U.js} +3 -3
- package/dist/{chunk-IGCOTLQI.js → chunk-C5CAL3DX.js} +136 -5
- package/dist/{chunk-IGCOTLQI.js.map → chunk-C5CAL3DX.js.map} +1 -1
- package/dist/{chunk-YWWMYEAC.js → chunk-CLSYYO5F.js} +2 -2
- package/dist/{chunk-OSBGZYXZ.js → chunk-D2R5SJEL.js} +16 -2
- package/dist/chunk-D2R5SJEL.js.map +1 -0
- package/dist/{chunk-JMN4COMK.js → chunk-D7STTNQN.js} +3 -3
- package/dist/{chunk-DSPEN7ZJ.js → chunk-DKX7LF5Q.js} +4 -4
- package/dist/{chunk-5XXXJ6DT.js → chunk-E2RC367T.js} +47 -8
- package/dist/chunk-E2RC367T.js.map +1 -0
- package/dist/{chunk-3DGIANAN.js → chunk-FJEKQ4FT.js} +1 -1
- package/dist/{chunk-3DGIANAN.js.map → chunk-FJEKQ4FT.js.map} +1 -1
- package/dist/{chunk-KI4DOTN4.js → chunk-G7U7FQVC.js} +3 -1
- package/dist/chunk-G7U7FQVC.js.map +1 -0
- package/dist/{chunk-6AGXDYVE.js → chunk-IB5VIXLR.js} +2 -2
- package/dist/{chunk-Q4NSUGMS.js → chunk-JJXBRY2U.js} +74 -6
- package/dist/chunk-JJXBRY2U.js.map +1 -0
- package/dist/{chunk-PGDBSK2L.js → chunk-L6UHMWXU.js} +2 -2
- package/dist/{chunk-MS4A7N77.js → chunk-PEL3MJLM.js} +2 -2
- package/dist/{chunk-TNI4MARH.js → chunk-SFGGRC35.js} +23 -6
- package/dist/chunk-SFGGRC35.js.map +1 -0
- package/dist/{chunk-4D4YVXHR.js → chunk-SYIQV4UH.js} +29 -2
- package/dist/{chunk-4D4YVXHR.js.map → chunk-SYIQV4UH.js.map} +1 -1
- package/dist/{chunk-FFS7IRZF.js → chunk-SZWGXHY3.js} +2 -2
- package/dist/{chunk-SX7ZAHNE.js → chunk-WBB3MEEN.js} +16 -2
- package/dist/chunk-WBB3MEEN.js.map +1 -0
- package/dist/{chunk-TMQ52AZR.js → chunk-X2LFNDJQ.js} +2 -2
- package/dist/{chunk-FWEXQ2BR.js → chunk-XLSJWKSP.js} +11 -11
- package/dist/{chunk-NZDGV4YJ.js → chunk-YCF3N4JS.js} +2 -2
- package/dist/cli/index.js +9 -9
- package/dist/{cloudflare-XO43ZIQF.js → cloudflare-4M4XVNUH.js} +5 -3
- package/dist/{cloudflare-XO43ZIQF.js.map → cloudflare-4M4XVNUH.js.map} +1 -1
- package/dist/{config-support-O4REYSK5.js → config-support-SB5NDQZB.js} +11 -5
- package/dist/{config-support-O4REYSK5.js.map → config-support-SB5NDQZB.js.map} +1 -1
- package/dist/{deno-deploy-EUQDK2RC.js → deno-deploy-IVACZ62D.js} +11 -5
- package/dist/deno-deploy-IVACZ62D.js.map +1 -0
- package/dist/{dev-CD4YU5FN.js → dev-JDJWMRLH.js} +9 -9
- package/dist/{index-inRdhi59.d.ts → index-CmkWlIDO.d.ts} +3 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.js +7 -7
- package/dist/{info-2H7I55YN.js → info-SUX7QVA3.js} +4 -4
- package/dist/{internal-api-TMLSNYMP.js → internal-api-6XNLCNI5.js} +6 -6
- package/dist/{internal-api-WAKX6AZW.js → internal-api-VDYOXOT7.js} +4 -4
- package/dist/{load-config-VMKOV44Y.js → load-config-52H3EKAA.js} +4 -4
- package/dist/{mcp-HS26ZCU4.js → mcp-WJNCTM7M.js} +3 -3
- package/dist/{netlify-LEYEQZK6.js → netlify-3HEWV375.js} +6 -4
- package/dist/{netlify-LEYEQZK6.js.map → netlify-3HEWV375.js.map} +1 -1
- package/dist/{node-OSVPYQ3D.js → node-QUGTW6XV.js} +2 -2
- package/dist/{observability-bootstrap-YQKMEYW7.js → observability-bootstrap-FP6LMMJE.js} +3 -3
- package/dist/{openapi-N4CXRUNT.js → openapi-Q53YOBIU.js} +4 -4
- package/dist/{preview-YDJSRJ2K.js → preview-BARW75PN.js} +3 -3
- package/dist/{rate-limit-BdNDZ3vt.d.ts → rate-limit-fULgvzCz.d.ts} +11 -1
- package/dist/{rate-limit-store-BEJnhWdw.d.ts → rate-limit-store-n1wD4Yk4.d.ts} +48 -1
- package/dist/registry-SDBODRU6.js +23 -0
- package/dist/{routes-ECCDRHXZ.js → routes-FDF4SLOB.js} +4 -4
- package/dist/{schema-ND7GHPQK.js → schema-LHNWUR4V.js} +3 -3
- package/dist/{schemas-QCMSKQDK.js → schemas-2R2J64ZH.js} +2 -2
- package/dist/server/auth/index.d.ts +1 -1
- package/dist/server/http/index.d.ts +1 -1
- package/dist/server/http/index.js +5 -3
- package/dist/server/index.d.ts +4 -4
- package/dist/server/index.js +15 -7
- package/dist/server/index.js.map +1 -1
- package/dist/server/rate-limit/index.d.ts +96 -14
- package/dist/server/rate-limit/index.js +10 -4
- package/dist/server/storage/index.js +1 -1
- package/dist/{server-boundary-RX2AFU5U.js → server-boundary-AO6EELRF.js} +4 -4
- package/dist/{server-boundary-NZPP33G6.js → server-boundary-E5GFVPLB.js} +6 -6
- package/dist/{start-TYXS5I4M.js → start-4JTYXQQJ.js} +14 -11
- package/dist/start-4JTYXQQJ.js.map +1 -0
- package/dist/{static-7OJNB7D2.js → static-NQPLPAB6.js} +6 -2
- package/dist/{static-7OJNB7D2.js.map → static-NQPLPAB6.js.map} +1 -1
- package/dist/{theo-cloud-3ET4G5T6.js → theo-cloud-HMFNZ3FS.js} +3 -1
- package/dist/{theo-cloud-3ET4G5T6.js.map → theo-cloud-HMFNZ3FS.js.map} +1 -1
- package/dist/{vercel-HTAWCNAG.js → vercel-5PMYEEKF.js} +6 -4
- package/dist/{vercel-HTAWCNAG.js.map → vercel-5PMYEEKF.js.map} +1 -1
- package/dist/vite-plugin/index.d.ts +2 -2
- package/dist/vite-plugin/index.js +7 -7
- package/dist/{vite-plugin-DDILUFYY.js → vite-plugin-3ON45MQE.js} +8 -8
- package/package.json +3 -3
- package/dist/build-KCIH3HI6.js.map +0 -1
- package/dist/chunk-5XXXJ6DT.js.map +0 -1
- package/dist/chunk-KI4DOTN4.js.map +0 -1
- package/dist/chunk-OSBGZYXZ.js.map +0 -1
- package/dist/chunk-Q4NSUGMS.js.map +0 -1
- package/dist/chunk-SX7ZAHNE.js.map +0 -1
- package/dist/chunk-TNI4MARH.js.map +0 -1
- package/dist/deno-deploy-EUQDK2RC.js.map +0 -1
- package/dist/registry-4JHCZ6EF.js +0 -23
- package/dist/start-TYXS5I4M.js.map +0 -1
- /package/dist/{actions-virtual-module-2SM6YMTM.js.map → actions-virtual-module-EAKYEMGF.js.map} +0 -0
- /package/dist/{actions-virtual-module-5LRBP6YK.js.map → actions-virtual-module-OHENNMQG.js.map} +0 -0
- /package/dist/{agent-4FXJXZFD.js.map → agent-VJTZ4DQ7.js.map} +0 -0
- /package/dist/{app-typed-client-LIIPHLO6.js.map → app-typed-client-ILLQYTXP.js.map} +0 -0
- /package/dist/{app-typed-client-JFPV4YLS.js.map → app-typed-client-LHH77QDB.js.map} +0 -0
- /package/dist/{chunk-KOG5K26V.js.map → chunk-2Z7TANA4.js.map} +0 -0
- /package/dist/{chunk-V6VARIR3.js.map → chunk-4EQEJ4PH.js.map} +0 -0
- /package/dist/{chunk-3NAKOWTX.js.map → chunk-6U67SO5U.js.map} +0 -0
- /package/dist/{chunk-YWWMYEAC.js.map → chunk-CLSYYO5F.js.map} +0 -0
- /package/dist/{chunk-JMN4COMK.js.map → chunk-D7STTNQN.js.map} +0 -0
- /package/dist/{chunk-DSPEN7ZJ.js.map → chunk-DKX7LF5Q.js.map} +0 -0
- /package/dist/{chunk-6AGXDYVE.js.map → chunk-IB5VIXLR.js.map} +0 -0
- /package/dist/{chunk-PGDBSK2L.js.map → chunk-L6UHMWXU.js.map} +0 -0
- /package/dist/{chunk-MS4A7N77.js.map → chunk-PEL3MJLM.js.map} +0 -0
- /package/dist/{chunk-FFS7IRZF.js.map → chunk-SZWGXHY3.js.map} +0 -0
- /package/dist/{chunk-TMQ52AZR.js.map → chunk-X2LFNDJQ.js.map} +0 -0
- /package/dist/{chunk-FWEXQ2BR.js.map → chunk-XLSJWKSP.js.map} +0 -0
- /package/dist/{chunk-NZDGV4YJ.js.map → chunk-YCF3N4JS.js.map} +0 -0
- /package/dist/{dev-CD4YU5FN.js.map → dev-JDJWMRLH.js.map} +0 -0
- /package/dist/{info-2H7I55YN.js.map → info-SUX7QVA3.js.map} +0 -0
- /package/dist/{internal-api-TMLSNYMP.js.map → internal-api-6XNLCNI5.js.map} +0 -0
- /package/dist/{internal-api-WAKX6AZW.js.map → internal-api-VDYOXOT7.js.map} +0 -0
- /package/dist/{load-config-VMKOV44Y.js.map → load-config-52H3EKAA.js.map} +0 -0
- /package/dist/{mcp-HS26ZCU4.js.map → mcp-WJNCTM7M.js.map} +0 -0
- /package/dist/{node-OSVPYQ3D.js.map → node-QUGTW6XV.js.map} +0 -0
- /package/dist/{observability-bootstrap-YQKMEYW7.js.map → observability-bootstrap-FP6LMMJE.js.map} +0 -0
- /package/dist/{openapi-N4CXRUNT.js.map → openapi-Q53YOBIU.js.map} +0 -0
- /package/dist/{preview-YDJSRJ2K.js.map → preview-BARW75PN.js.map} +0 -0
- /package/dist/{registry-4JHCZ6EF.js.map → registry-SDBODRU6.js.map} +0 -0
- /package/dist/{routes-ECCDRHXZ.js.map → routes-FDF4SLOB.js.map} +0 -0
- /package/dist/{schema-ND7GHPQK.js.map → schema-LHNWUR4V.js.map} +0 -0
- /package/dist/{schemas-QCMSKQDK.js.map → schemas-2R2J64ZH.js.map} +0 -0
- /package/dist/{server-boundary-RX2AFU5U.js.map → server-boundary-AO6EELRF.js.map} +0 -0
- /package/dist/{server-boundary-NZPP33G6.js.map → server-boundary-E5GFVPLB.js.map} +0 -0
- /package/dist/{vite-plugin-DDILUFYY.js.map → vite-plugin-3ON45MQE.js.map} +0 -0
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
newSpanId,
|
|
22
22
|
newTraceId,
|
|
23
23
|
requestTrace
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-PEL3MJLM.js";
|
|
25
25
|
import {
|
|
26
26
|
RequestBodyConsumedError,
|
|
27
27
|
createLogger,
|
|
@@ -542,6 +542,24 @@ async function runWebShapedMiddleware(mw, req, res, context) {
|
|
|
542
542
|
function isWebShaped(mw) {
|
|
543
543
|
return WEB_SHAPED_MIDDLEWARE in mw;
|
|
544
544
|
}
|
|
545
|
+
var warnedUninvocable = /* @__PURE__ */ new Set();
|
|
546
|
+
function describeUninvocable(value) {
|
|
547
|
+
if (value === void 0) return "no default export";
|
|
548
|
+
if (value === null) return "a default export of `null`";
|
|
549
|
+
if (typeof value !== "object") return `a default export of type \`${typeof value}\``;
|
|
550
|
+
const keys = Object.keys(value);
|
|
551
|
+
if (keys.includes("build") && keys.includes("handle")) {
|
|
552
|
+
return "a middleware BUILDER that was never built \u2014 call `.handle(fn).build()` on it";
|
|
553
|
+
}
|
|
554
|
+
return `an object with keys [${keys.join(", ")}]`;
|
|
555
|
+
}
|
|
556
|
+
function reportUninvocableMiddleware(path, value) {
|
|
557
|
+
if (warnedUninvocable.has(path)) return;
|
|
558
|
+
warnedUninvocable.add(path);
|
|
559
|
+
console.warn(
|
|
560
|
+
`[theokit] middleware not run: ${path} exports ${describeUninvocable(value)}. The file-scan runner invokes a function; this export is not one, so it was skipped and the request was answered without it.`
|
|
561
|
+
);
|
|
562
|
+
}
|
|
545
563
|
async function runScannedMiddleware(mw, req, res, context) {
|
|
546
564
|
if (isWebShaped(mw)) {
|
|
547
565
|
const { shortCircuited } = await runWebShapedMiddleware(mw, req, res, context);
|
|
@@ -600,7 +618,10 @@ async function runMiddlewareAndContext(req, res, loadModule, serverDir) {
|
|
|
600
618
|
for (const mwPath of dirMiddlewares) {
|
|
601
619
|
const mod = await loadModule(mwPath);
|
|
602
620
|
const mw = mod.default;
|
|
603
|
-
if (typeof mw !== "function")
|
|
621
|
+
if (typeof mw !== "function") {
|
|
622
|
+
reportUninvocableMiddleware(mwPath, mod.default);
|
|
623
|
+
continue;
|
|
624
|
+
}
|
|
604
625
|
const { aborted } = await runScannedMiddleware(mw, req, res, middlewareCtx);
|
|
605
626
|
if (aborted) return { ctx: middlewareCtx, aborted: true };
|
|
606
627
|
}
|
|
@@ -611,6 +632,8 @@ async function runMiddlewareAndContext(req, res, loadModule, serverDir) {
|
|
|
611
632
|
if (typeof mw === "function") {
|
|
612
633
|
const { aborted } = await runScannedMiddleware(mw, req, res, middlewareCtx);
|
|
613
634
|
if (aborted) return { ctx: middlewareCtx, aborted: true };
|
|
635
|
+
} else {
|
|
636
|
+
reportUninvocableMiddleware(singleFilePath, mod.default);
|
|
614
637
|
}
|
|
615
638
|
}
|
|
616
639
|
const factoryCtx = await createServerContext(req, res, loadModule, serverDir);
|
|
@@ -1803,6 +1826,13 @@ async function createPluginRunnerFromConfig(plugins) {
|
|
|
1803
1826
|
}
|
|
1804
1827
|
|
|
1805
1828
|
// src/server/rate-limit/rate-limit-store.ts
|
|
1829
|
+
function slidingCount(state, windowMs) {
|
|
1830
|
+
const { previousCount } = state;
|
|
1831
|
+
if (previousCount === void 0 || previousCount === 0) return state.count;
|
|
1832
|
+
const windowStart = state.resetAt - windowMs;
|
|
1833
|
+
const throughCurrent = Math.min(1, Math.max(0, (Date.now() - windowStart) / windowMs));
|
|
1834
|
+
return state.count + previousCount * (1 - throughCurrent);
|
|
1835
|
+
}
|
|
1806
1836
|
var InMemoryStore = class _InMemoryStore {
|
|
1807
1837
|
store = /* @__PURE__ */ new Map();
|
|
1808
1838
|
/** Bound the map to prevent unbounded growth from pathological inputs. */
|
|
@@ -1838,12 +1868,18 @@ var InMemoryStore = class _InMemoryStore {
|
|
|
1838
1868
|
}
|
|
1839
1869
|
const entry = this.store.get(key);
|
|
1840
1870
|
if (!entry || now >= entry.resetAt) {
|
|
1841
|
-
|
|
1871
|
+
let previousCount = 0;
|
|
1872
|
+
let resetAt = now + windowMs;
|
|
1873
|
+
if (entry !== void 0 && now - entry.resetAt < windowMs) {
|
|
1874
|
+
previousCount = entry.count;
|
|
1875
|
+
resetAt = entry.resetAt + windowMs;
|
|
1876
|
+
}
|
|
1877
|
+
const fresh = { count: 1, resetAt, previousCount };
|
|
1842
1878
|
this.store.set(key, fresh);
|
|
1843
1879
|
return { ...fresh };
|
|
1844
1880
|
}
|
|
1845
1881
|
entry.count++;
|
|
1846
|
-
return { count: entry.count, resetAt: entry.resetAt };
|
|
1882
|
+
return { count: entry.count, resetAt: entry.resetAt, previousCount: entry.previousCount };
|
|
1847
1883
|
}
|
|
1848
1884
|
/** Sweep expired entries. Called by the GC timer; safe to call manually. */
|
|
1849
1885
|
sweepExpired() {
|
|
@@ -1899,13 +1935,15 @@ function createRateLimiter(config, opts = {}) {
|
|
|
1899
1935
|
};
|
|
1900
1936
|
}
|
|
1901
1937
|
function resultFromState(state, config) {
|
|
1902
|
-
|
|
1903
|
-
|
|
1938
|
+
const reset = String(Math.ceil(state.resetAt / 1e3));
|
|
1939
|
+
if (slidingCount(state, config.windowMs) > config.max) {
|
|
1940
|
+
const retryAfter = Math.max(0, Math.ceil((state.resetAt - Date.now()) / 1e3));
|
|
1904
1941
|
return {
|
|
1905
1942
|
limited: true,
|
|
1906
1943
|
headers: {
|
|
1907
1944
|
"X-RateLimit-Limit": String(config.max),
|
|
1908
1945
|
"X-RateLimit-Remaining": "0",
|
|
1946
|
+
"X-RateLimit-Reset": reset,
|
|
1909
1947
|
"Retry-After": String(retryAfter)
|
|
1910
1948
|
}
|
|
1911
1949
|
};
|
|
@@ -1914,7 +1952,8 @@ function resultFromState(state, config) {
|
|
|
1914
1952
|
limited: false,
|
|
1915
1953
|
headers: {
|
|
1916
1954
|
"X-RateLimit-Limit": String(config.max),
|
|
1917
|
-
"X-RateLimit-Remaining": String(Math.max(0, config.max - state.count))
|
|
1955
|
+
"X-RateLimit-Remaining": String(Math.max(0, config.max - state.count)),
|
|
1956
|
+
"X-RateLimit-Reset": reset
|
|
1918
1957
|
}
|
|
1919
1958
|
};
|
|
1920
1959
|
}
|
|
@@ -2696,4 +2735,4 @@ export {
|
|
|
2696
2735
|
CsrfReadinessStore,
|
|
2697
2736
|
applySecurityHeaders
|
|
2698
2737
|
};
|
|
2699
|
-
//# sourceMappingURL=chunk-
|
|
2738
|
+
//# sourceMappingURL=chunk-E2RC367T.js.map
|