UNPKG

mongoku

Version:

[![CI](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml/badge.svg)](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)

136 lines (133 loc) 7.77 kB
import './async-DUoD1OpG.js'; import { e as escape_html, a as attr, d as derived } from './root-otUAnOAR.js'; import './servers.remote-CGenkEHX.js'; import { P as Panel } from './Panel-C6VWd6JD.js'; import { P as PrettyJson } from './PrettyJson-Bo4UtQ1o.js'; import './shared-server-BmU87nph.js'; import './utils-BQzn9ikS.js'; import './shared-DlqhoNLb.js'; import './index-NcxaM188.js'; import './jsonParser-C3QUcODD.js'; import 'esprima'; import './JsonEncoder-Dgtqxb_U.js'; import 'mongodb'; import './logger-PfH_grbh.js'; import 'async_hooks'; import 'node:util'; import './mongo-B92d7zNj.js'; import 'dns/promises'; import 'url'; import 'node:fs'; import 'node:os'; import 'node:path'; import './schema-BZonjzNJ.js'; import 'zod'; import './server2-D_y4YbpC.js'; import './server-Crjo4w1q.js'; import './routing-EDfUNu8L.js'; import './JsonValue-CGVfzyTL.js'; import './Tooltip-OVylvwfb.js'; function _page($$renderer, $$props) { $$renderer.component(($$renderer2) => { let { data } = $$props; let isAuditing = false; let readPreferenceMode = ""; let readPreferenceTags = ""; let schemaInfo = derived(() => data.schemaInfo); { let actions = function($$renderer3) { if (schemaInfo().hasSchema) { $$renderer3.push("<!--[0-->"); $$renderer3.push(`<button class="btn btn-primary btn-sm -my-2"${attr("disabled", isAuditing, true)}>`); { $$renderer3.push("<!--[-1-->"); } $$renderer3.push(`<!--]--> ${escape_html("Run Audit")}</button>`); } else { $$renderer3.push("<!--[-1-->"); } $$renderer3.push(`<!--]-->`); }; Panel($$renderer2, { title: "Schema Validation", titleClass: "py-2", actions, children: ($$renderer3) => { $$renderer3.push(`<div class="p-4 space-y-6"><div><h3 class="text-sm font-semibold mb-3 uppercase tracking-wide" style="color: var(--text-secondary);">Configuration</h3> `); if (schemaInfo().hasSchema) { $$renderer3.push("<!--[0-->"); $$renderer3.push(`<div class="overflow-hidden rounded-lg border border-[var(--border-color)] bg-[var(--color-1)]"><table class="table mb-0"><tbody><tr><td class="font-medium whitespace-nowrap px-4 py-3 text-sm w-40">Status</td><td class="px-4 py-3"><span class="badge badge-success">Active</span></td></tr><tr><td class="font-medium whitespace-nowrap px-4 py-3 text-sm w-40">Validation Level</td><td class="px-4 py-3"><span class="font-mono text-sm" style="color: var(--text);">${escape_html(schemaInfo().validationLevel ?? "strict")}</span> <span class="text-xs ml-2" style="color: var(--text-darker);">`); if (schemaInfo().validationLevel === "strict") { $$renderer3.push("<!--[0-->"); $$renderer3.push(`— all inserts &amp; updates validated`); } else if (schemaInfo().validationLevel === "moderate") { $$renderer3.push("<!--[1-->"); $$renderer3.push(`— only existing valid docs re-checked`); } else { $$renderer3.push("<!--[-1-->"); $$renderer3.push(`— no validation`); } $$renderer3.push(`<!--]--></span></td></tr><tr><td class="font-medium whitespace-nowrap px-4 py-3 text-sm w-40">Validation Action</td><td class="px-4 py-3"><span class="font-mono text-sm" style="color: var(--text);">${escape_html(schemaInfo().validationAction ?? "error")}</span> <span class="text-xs ml-2" style="color: var(--text-darker);">`); if (schemaInfo().validationAction === "warn") { $$renderer3.push("<!--[0-->"); $$renderer3.push(`— invalid docs accepted with warning`); } else { $$renderer3.push("<!--[-1-->"); $$renderer3.push(`— invalid docs rejected`); } $$renderer3.push(`<!--]--></span></td></tr></tbody></table></div> <div class="mt-4"><h4 class="text-xs font-semibold mb-2 uppercase tracking-wide" style="color: var(--text-secondary);">JSON Schema</h4> <div class="rounded-lg border border-[var(--border-color)] overflow-hidden">`); PrettyJson($$renderer3, { json: schemaInfo().validator, autoCollapse: false, server: data.server, database: data.database, collection: data.collection }); $$renderer3.push(`<!----></div></div>`); } else { $$renderer3.push("<!--[-1-->"); $$renderer3.push(`<div class="rounded-lg border border-[var(--border-color)] bg-[var(--color-1)] p-8 text-center"><div class="text-4xl mb-3 opacity-30">📋</div> <p class="text-sm font-medium" style="color: var(--text-secondary);">No JSON Schema validator configured.</p> <p class="text-xs mt-1" style="color: var(--text-darker);">Use MongoDB's <a href="https://www.mongodb.com/docs/manual/core/schema-validation/" target="_blank" rel="noopener" class="underline" style="color: var(--link);">schema validation</a> to enforce document structure.</p></div>`); } $$renderer3.push(`<!--]--></div> `); if (schemaInfo().hasSchema) { $$renderer3.push("<!--[0-->"); $$renderer3.push(`<div><h3 class="text-sm font-semibold mb-3 uppercase tracking-wide" style="color: var(--text-secondary);">Compliance Audit</h3> <details class="mb-4"><summary class="cursor-pointer text-sm font-medium" style="color: var(--text-secondary);">Read Preference (optional)</summary> <div class="mt-3 grid grid-cols-1 sm:grid-cols-2 gap-3 p-3 rounded-lg bg-[var(--color-3)]/50"><label class="block"><span class="text-xs font-medium" style="color: var(--text-secondary);">Mode</span> `); $$renderer3.select( { value: readPreferenceMode, class: "mt-1 w-full px-3 py-2 bg-[var(--color-1)] border border-[var(--border-color)] rounded text-sm", style: "color: var(--text);" }, ($$renderer4) => { $$renderer4.option({ value: "" }, ($$renderer5) => { $$renderer5.push(`Default`); }); $$renderer4.option({ value: "secondaryPreferred" }, ($$renderer5) => { $$renderer5.push(`secondaryPreferred`); }); $$renderer4.option({ value: "secondary" }, ($$renderer5) => { $$renderer5.push(`secondary`); }); $$renderer4.option({ value: "nearest" }, ($$renderer5) => { $$renderer5.push(`nearest`); }); } ); $$renderer3.push(`</label> <label class="block"><span class="text-xs font-medium" style="color: var(--text-secondary);">Tags (JSON)</span> <input type="text"${attr("value", readPreferenceTags)} placeholder="[{&quot;nodeType&quot;:&quot;ANALYTICS&quot;}]" class="mt-1 w-full px-3 py-2 bg-[var(--color-1)] border border-[var(--border-color)] rounded text-sm font-mono" style="color: var(--text);"/></label></div></details> `); { $$renderer3.push("<!--[-1-->"); $$renderer3.push(`<div class="rounded-lg border border-[var(--border-color)] bg-[var(--color-1)] p-6 text-center"><p class="text-sm" style="color: var(--text-secondary);">Click "Run Audit" to check document compliance.</p></div>`); } $$renderer3.push(`<!--]--></div>`); } else { $$renderer3.push("<!--[-1-->"); } $$renderer3.push(`<!--]--></div>`); }, $$slots: { actions: true, default: true } }); } }); } export { _page as default }; //# sourceMappingURL=_page.svelte-e5wWk327.js.map