mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-21 06:12:17 +03:00
Landed with the design call resolved per the owner's pick — **option 1**: the synced store is now endpoint-agnostic (persistDiscoveredModels and managedModelImport no longer drop non-chat models at write time), and chat selectability moved to read time (auto-pool expansion in autoStrategy applies filterChatSelectableModels; the models-route projection already had its chatOnly filter). Your discovery test now passes end-to-end (3/3): /api/show capabilities persist per connection and image/embedding requests route through the advertising host. Reconciliation notes: conflicted areas merged onto the current tip (adobe discovery import, requestedModel preflight signature, resolvedProvider fast-path coexists with the synced-route override — explicit resolution wins); carried base-red drains (#10055 memoization, #11071 test variants) dropped as already-landed; the managed-model-import exclusion test was propagated to the new contract (image/video models persist; the read filter still hides them from chat pickers — pinned by a new assertion). Full battery: 205/206 focused (the one red is a confirmed periodic-timer timing flake on the loaded devbox — 20/20 isolated), autoCombo vitest 30/30, combo suites 46/46, gates + typecheck clean. Thank you @yourspraveen — the capability probe + routing design was right; it just needed the store contract opened up. Fixes #11087.
55 lines
2.6 KiB
TypeScript
55 lines
2.6 KiB
TypeScript
// Guards the native `require` shape that webpack silently rewrites when the
|
|
// module specifier (or the require itself) is not statically analyzable.
|
|
//
|
|
// This failure cannot be caught by running the code: under `tsx`/`node --test` the
|
|
// injected loader behaves normally, so the existing driverFactory tests pass in BOTH
|
|
// the broken and fixed shapes. The damage only appears in a packaged Next server build.
|
|
// The sql.js fallback is covered separately through package assembly and installed-
|
|
// artifact boot/write/read outcomes; do not pin another resolver implementation here.
|
|
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
|
|
function readSource(relativePath: string): string {
|
|
return fs.readFileSync(path.join(repoRoot, relativePath), "utf8");
|
|
}
|
|
|
|
/**
|
|
* Strips comments before shape-matching. Both files document the rewritten forms they
|
|
* must avoid, so a scan of the raw text matches its own warning and fails on the FIXED
|
|
* source — a guard that can only ever be satisfied by deleting the explanation.
|
|
*/
|
|
function stripComments(source: string): string {
|
|
return source.replace(/\/\*[\s\S]*?\*\//g, "").replace(/^[ \t]*\/\/.*$/gm, "");
|
|
}
|
|
|
|
test("sync driver cascade requires each SQLite module by literal specifier", () => {
|
|
const driverFactory = stripComments(readSource("src/lib/db/adapters/driverFactory.ts"));
|
|
|
|
// Positive anchor: proves the read hit the real, non-empty module (#8619).
|
|
assert.match(driverFactory, /^export function createSyncDriverFactory\(/m);
|
|
|
|
// The production loader must be the literal-specifier wrapper, never `_require`
|
|
// itself — passing `_require` through the `load` parameter is exactly what makes
|
|
// webpack substitute its missing-module stub.
|
|
assert.match(
|
|
driverFactory,
|
|
/const openSyncDriver = createSyncDriverFactory\((?:requireSqliteDriver|\w+)(?:,\s*createBetterSqliteProbe\(\{\}\))?\)/
|
|
);
|
|
assert.match(driverFactory, /^export function tryOpenSync\($/m);
|
|
assert.doesNotMatch(driverFactory, /createSyncDriverFactory\(\s*_require\s*\)/);
|
|
|
|
// Every driver the cascade can ask for needs a direct `_require("<literal>")` so
|
|
// webpack emits a real external for it.
|
|
for (const moduleName of ["bun:sqlite", "better-sqlite3", "node:sqlite"]) {
|
|
assert.ok(
|
|
driverFactory.includes(`_require("${moduleName}")`),
|
|
`driverFactory must call _require("${moduleName}") with a literal specifier so webpack emits an external for it`
|
|
);
|
|
}
|
|
});
|