yamlite 0.38.0 → 0.40.0

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.
Files changed (30) hide show
  1. package/README.md +7 -3
  2. package/dist/browser/chokidar.mjs +1 -1
  3. package/dist/browser/expose.mjs +10 -17
  4. package/dist/browser/fs.d.mts +5 -0
  5. package/dist/browser/fs.mjs +1 -1
  6. package/dist/cli.mjs +3 -2
  7. package/dist/core.d.mts +22 -13
  8. package/dist/core.mjs +3 -3
  9. package/dist/{fs-DZ4QHM93.mjs → fs-BM30qNPb.mjs} +8 -1
  10. package/dist/{index-OSyELQEX.d.mts → index-CDLxve55.d.mts} +2 -0
  11. package/dist/index.d.mts +1 -1
  12. package/dist/index.mjs +1 -1
  13. package/dist/{src-DdRmp-vT.mjs → src-NOJw_gTE.mjs} +185 -12
  14. package/dist/ui/assets/{ErdView-Cv4lBB9J.js → ErdView-Dqs3Ly-E.js} +1 -1
  15. package/dist/ui/assets/{MarkdownField-UKgTcG0X.js → MarkdownField-Bg4zDZM_.js} +1 -1
  16. package/dist/ui/assets/PageView-D0hs43d8.js +1 -0
  17. package/dist/ui/assets/access-DSnHSuXB.js +1 -0
  18. package/dist/ui/assets/{index-BnlDexUD.js → index-LbUt_Zkt.js} +58 -57
  19. package/dist/ui/assets/load-ylhnQAWa.js +2 -0
  20. package/dist/ui/index.html +1 -1
  21. package/dist/ui-embed/{ErdView-Dk-iexgy.js → ErdView-CgNnAf5I.js} +2 -2
  22. package/dist/ui-embed/{HintPopover-D5P2UuTa.js → HintPopover-8CeJLQO5.js} +1611 -1605
  23. package/dist/ui-embed/{PageView-BzCYlXPg.js → PageView-B29tXeqW.js} +158 -141
  24. package/dist/ui-embed/{activity-letLdXN4.js → activity-DecWPHxS.js} +1 -1
  25. package/dist/ui-embed/embed.js +875 -852
  26. package/dist/ui-embed/{pageFrame-CFoU6UjD.js → pageFrame-ClOBfTt9.js} +1 -1
  27. package/dist/{workspace-B4WnIeHR.mjs → workspace-Cp5-yHYp.mjs} +7 -3
  28. package/package.json +1 -1
  29. package/dist/ui/assets/PageView-SFpedZG6.js +0 -1
  30. package/dist/ui/assets/load-S46Mj3YT.js +0 -2
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./sql-wasm-browser-CNwHQfY0.js","./rolldown-runtime-XKyaHtl9.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{C as t,Gt as n,Ht as r,P as i,S as a,T as o,Wt as s,n as c,r as l,w as u,x as d}from"./index-LbUt_Zkt.js";import{c as f,l as p,o as m,s as h,t as g}from"./access-DSnHSuXB.js";var _=(e,t)=>e instanceof Map?e.get(t):Object.hasOwn(e,t)?e[t]:void 0;function v(e,t){if(_(t,e)!==void 0)return{column:e,path:[]};let n=e.indexOf(`.`);if(n<=0)return null;let r=e.slice(0,n),i=e.slice(n+1).split(`.`);return i.some(e=>e===``)||_(t,r)!==`JSON`?null:{column:r,path:i}}var y=e=>e.path.length>0,b=e=>`'$${e.map(e=>`."${e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}"`).join(``).replaceAll(`'`,`''`)}'`,x=(e,t)=>e===``?o(t):`${e}.${o(t)}`;function S(e,t){let n=x(e,t.column);return y(t)?`CASE WHEN json_valid(${n}) THEN json_extract(${n}, ${b(t.path)}) END`:n}function C(e,t){return`json_each(${x(e,t.column)}, ${b(t.path)})`}function w(e){let t=Number(e);return Number.isSafeInteger(t)?t:e}var T=(e,t)=>{if(typeof t!=`bigint`)return t;let n=w(t);return typeof n==`bigint`?n.toString():n};function E(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function D(e){return e==null?null:typeof e==`boolean`?e?1n:0n:typeof e==`bigint`||typeof e==`number`||typeof e==`string`||e instanceof Uint8Array?e:JSON.stringify(e,T)}function O(e,t){if(e===null)return null;if(e instanceof Uint8Array)return E(e);let n=typeof e==`bigint`?w(e):e;if(t===`BOOLEAN`&&(n===0||n===1))return n===1;if(t===`JSON`&&typeof n==`string`)try{let e=JSON.parse(n);if(typeof e==`object`&&e)return e}catch{}return n}function k(e){if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:e.toString()}return Array.isArray(e)?e.map(k):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,k(t)])):e}function A(e,t){let n={};for(let[r,i]of Object.entries(e))n[r]=i===null?null:k(O(i,t.get(r)??`TEXT`));return n}function j(e,t){return e==null?null:typeof e==`number`&&Number.isInteger(e)&&(t===`INTEGER`||t===void 0)||t===`INTEGER`&&typeof e==`string`&&/^-?\d+$/.test(e)?BigInt(e):e}var M=[`eq`,`ne`,`lt`,`lte`,`gt`,`gte`,`contains`,`has`,`null`,`notnull`],N={eq:`=`,ne:`<>`,lt:`<`,lte:`<=`,gt:`>`,gte:`>=`};function P(e,t,n,r){if(e===null)return t;let i=Number(e);if(!Number.isInteger(i))throw new u(400,`not an integer: ${e}`);return Math.min(r,Math.max(n,i))}function F(e){let t=P(e.get(`limit`),100,1,500),n=P(e.get(`offset`),0,0,2**53-1),r=null,i=e.get(`sort`);if(i){let e=i.lastIndexOf(`:`),t=e<0?i:i.slice(0,e),n=e<0?`asc`:i.slice(e+1);if(n!==`asc`&&n!==`desc`)throw new u(400,`invalid sort direction: ${n}`);r={col:t,dir:n}}let a=[],o=e.get(`filter`);if(o){let e;try{e=JSON.parse(o)}catch{throw new u(400,`filter must be a JSON array`)}if(!Array.isArray(e))throw new u(400,`filter must be a JSON array`);a=e.map(e=>{if(typeof e?.col!=`string`||!M.includes(e.op))throw new u(400,`invalid filter: ${JSON.stringify(e)}`);return{col:e.col,op:e.op,value:e.value}})}let s=e.get(`q`)?.trim();return{limit:t,offset:n,sort:r,filters:a,search:s||null}}function I(e,t){let n=[],r=[];for(let i of e.filters){let e=v(i.col,t);if(e===null)throw new u(400,`unknown column: ${i.col}`);let a=y(e)?void 0:t.get(i.col),o=S(``,e),s=N[i.op];if(s)n.push(`${o} ${s} ?`),r.push(D(j(i.value,a)));else if(i.op===`contains`)n.push(`instr(${o}, ?) > 0`),r.push(String(i.value??``));else if(i.op===`has`){if(!y(e)&&a!==`JSON`)throw new u(400,`"has" needs a JSON column; ${i.col} is ${a}`);let t=y(e)?C(``,e):`json_each(${o})`;n.push(`EXISTS (SELECT 1 FROM ${t} WHERE json_each.value = ?)`),r.push(D(j(i.value,void 0)))}else n.push(`${o} IS ${i.op===`null`?``:`NOT `}NULL`)}if(e.search!==null){let i=[...t].filter(([,e])=>e!==`BOOLEAN`).map(([e])=>e),a=i.map(e=>`instr(lower(CAST(${o(e)} AS TEXT)), lower(?)) > 0`);n.push(a.length>0?`(${a.join(` OR `)})`:`0`),r.push(...i.map(()=>e.search))}return{where:n.length>0?`WHERE ${n.join(` AND `)}`:``,params:r}}function L(e,t,n){let r=n.map(o).join(`, `);if(!e.sort)return`ORDER BY ${r}`;if(!t.has(e.sort.col))throw new u(400,`unknown column: ${e.sort.col}`);return`ORDER BY ${o(e.sort.col)} ${e.sort.dir.toUpperCase()}, ${r}`}var R=`read-only snapshot: only SELECT, EXPLAIN and VALUES run here`,z=1e3,B=`no AI key is configured on this host`,V=()=>new r(503,B,{error:B,code:`no_key`}),H=()=>Promise.reject(new r(403,R,{error:R})),U=e=>typeof e==`bigint`?e>=BigInt(-(2**53-1))&&e<=BigInt(2**53-1)?Number(e):e.toString():e;function W(e){if(e instanceof r)return e;if(e instanceof u)return new r(e.status,e.message,{error:e.message,...e.extra});let t=e instanceof Error?e.message:String(e);return new r(400,t,{error:t})}async function G(e){try{return await e()}catch(e){throw W(e)}}function K(e){let{db:i,snapshot:_}=e,{meta:v}=_;function y(e,t=[],n=1/0){let r=i.prepare(e);try{r.bind(t.map(U));let e=[],i=!1;for(;r.step();){if(e.length===n){i=!0;break}e.push(r.getAsObject(null,{useBigInt:!0}))}return{columns:r.getColumnNames(),rows:e,truncated:i}}finally{r.free()}}function b(e){let t=performance.now(),n=y(e,[],z),r=Math.round((performance.now()-t)*10)/10;return{columns:n.columns,rows:n.rows.map(e=>A(e,new Map)),truncated:n.truncated,ms:r}}function x(e,t,n,r){let i=F(r),{where:a,params:s}=I(i,t),c=Number(y(`SELECT count(*) AS n FROM ${o(e)} ${a}`,s).rows[0]?.n??0);return{rows:y(`SELECT * FROM ${o(e)} ${a} ${L(i,t,n)} LIMIT ? OFFSET ?`,[...s,i.limit,i.offset]).rows.map(e=>A(e,t)),total:c}}let S=e=>{let t=v.tables.find(t=>t.name===e);if(!t)throw new u(404,`unknown table: ${e}`);return t};return{meta:async()=>v,rows:(e,t)=>G(()=>{let n=v.views.find(t=>t.name===e);if(n)return n.inDb?x(n.name,new Map(Object.entries(n.columns)),n.identity,s(t)):{rows:[],total:0};let r=S(e);return r.inDb?x(r.name,new Map(Object.entries(r.columns)),[r.key],s(t)):{rows:[],total:0}}),search:(e,r)=>G(()=>{let i=a(n(e,r)),o=v.tables.filter(e=>e.inDb).map(e=>({name:e.name,key:e.key,columns:new Map(Object.entries(e.columns))})),s=d(o,i.needle,i.per);return{hits:s?y(s.sql,s.params).rows.map(t):[]}}),schema:e=>G(()=>{let t=_.schemas[e];if(!t)throw new u(404,`unknown table: ${e}`);return t}),record:(t,n)=>G(async()=>{let r=S(t),i=r.inDb?y(`SELECT * FROM ${o(r.name)} WHERE ${o(r.key)} = ?`,[n]).rows[0]:void 0;if(!i)throw new u(404,`no record "${n}" in ${r.name}`);let a={row:A(i,new Map(Object.entries(r.columns))),file:``,yaml:null};try{let{files:t,keys:i}=await e.loadYaml(r.name),o=Object.hasOwn(i,n)?i[n]:void 0;return o===void 0?a:{...a,file:o,yaml:Object.hasOwn(t,o)?t[o]:null}}catch(e){return{...a,yamlError:e instanceof Error?e.message:String(e)}}}),sql:e=>G(()=>{if(e.trim()===``)throw new u(400,`sql is required`);if(l(e)>1)throw new u(400,`run one statement at a time`);if(!c(e))throw new r(403,R,{error:R});return b(e)}),pageHtml:t=>G(()=>e.loadPage(t)),pageFile:(t,n)=>G(async()=>{let r=v.pages.find(e=>e.name===t);if(!r)throw new u(404,`unknown page: ${t}`);let i=p(n);if(i===null||!f(r.files,i))throw new u(403,`${n} is not in this page's files`);if(h(i,g))throw new u(403,`${n} is YAMLite's own and no page may read it`);return new Blob([await e.loadFile(i)],{type:m(i)})}),pageSql:(e,t)=>G(()=>{let n=v.pages.find(t=>t.name===e);if(!n)throw new u(404,`unknown page: ${e}`);if(!n.sql)throw new u(403,`page ${e} may not run SQL`);if(t.trim()===``)throw new u(400,`sql is required`);if(l(t)>1)throw new u(400,`run one statement at a time`);if(!c(t))throw new u(403,`a page can only run SELECT`);return b(t)}),pageAi:()=>Promise.reject(V()),pageAiStream:()=>({[Symbol.asyncIterator]:()=>({next:()=>Promise.reject(V())})}),conflicts:async()=>({conflicts:[]}),history:async()=>({state:`nogit`}),historyDiff:()=>Promise.reject(new r(404,`no git history in a snapshot`,{})),conflict:()=>Promise.reject(new r(404,`no conflicts in a snapshot`,{})),create:H,update:H,rename:H,remove:H,createTable:H,setGroup:H,previewRules:H,saveRules:H,restore:H,dismiss:H}}var q=class extends Error{file;constructor(e,t){super(`${e}: ${t}`),this.file=e}};async function J(e,t,n){let r;try{r=await n(new URL(t,e).toString())}catch(e){throw new q(t,e instanceof Error?e.message:String(e))}if(!r.ok)throw new q(t,`${r.status} ${r.statusText}`.trim());return r}function Y(e,t){let n=new Map;return r=>{let i=n.get(r);return i||(i=J(e,`data/yaml/${encodeURIComponent(r)}.json`,t).then(e=>e.json()),i.catch(()=>n.delete(r)),n.set(r,i)),i}}function X(e,t){return async n=>(await J(e,`data/pages/${encodeURIComponent(n)}.html`,t)).text()}function Z(e,t){return async n=>{let i=n.split(`/`).map(encodeURIComponent).join(`/`),a;try{a=await t(new URL(`data/files/${i}.bin`,e).toString())}catch(e){throw new r(502,e instanceof Error?e.message:String(e),{})}if(!a.ok)throw new r(a.status,`${n}: ${a.status} ${a.statusText}`.trim(),{});return a.blob()}}async function Q(t={}){let n=t.base??document.baseURI,r=t.fetcher??fetch,a=await(await J(n,`data/snapshot.json`,r)).json(),o=new Uint8Array(await(await J(n,`data/db.sqlite`,r)).arrayBuffer()),[{default:s},{default:c}]=await Promise.all([i(()=>import(`./sql-wasm-browser-CNwHQfY0.js`).then(t=>e(t.default,1)),__vite__mapDeps([0,1]),import.meta.url),i(()=>import(`./sql-wasm-Dnr4gnQb.js`),[],import.meta.url)]),l;try{l=await s({locateFile:()=>c})}catch(e){throw new q(`sql-wasm.wasm`,e instanceof Error?e.message:String(e))}return{api:K({db:new l.Database(o),snapshot:a,loadYaml:Y(n,r),loadPage:X(n,r),loadFile:Z(n,r)}),snapshot:a}}export{Q as loadStatic};
@@ -15,7 +15,7 @@
15
15
  document.documentElement.dataset.theme = dark ? "dark" : "light";
16
16
  } catch {}
17
17
  </script>
18
- <script type="module" crossorigin src="./assets/index-BnlDexUD.js"></script>
18
+ <script type="module" crossorigin src="./assets/index-LbUt_Zkt.js"></script>
19
19
  <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-XKyaHtl9.js">
20
20
  <link rel="modulepreload" crossorigin href="./assets/theme-CMaLONsO.js">
21
21
  <link rel="stylesheet" crossorigin href="./assets/index-BwkTtzmh.css">
@@ -1,6 +1,6 @@
1
1
  import { A as e, C as t, S as n, T as r, a as i, x as a, y as o } from "./theme-BwJfOY1V.js";
2
- import { $ as s, D as c, J as l, O as u, Q as d, R as f, X as p, Y as m, Z as h, _t as g, at as _, c as v, dt as y, et as b, gt as x, l as S, lt as C, mt as w, n as T, nt as E, ot as D, pt as O, q as k, r as A, s as j, t as M, ut as N } from "./HintPopover-D5P2UuTa.js";
3
- import { a as P, c as F, d as I, f as L, l as R, n as z, o as B, s as V, u as H } from "./activity-letLdXN4.js";
2
+ import { $ as s, D as c, J as l, O as u, Q as d, R as f, X as p, Y as m, Z as h, _t as g, at as _, c as v, dt as y, et as b, gt as x, l as S, lt as C, mt as w, n as T, nt as E, ot as D, pt as O, q as k, r as A, s as j, t as M, ut as N } from "./HintPopover-8CeJLQO5.js";
3
+ import { a as P, c as F, d as I, f as L, l as R, n as z, o as B, s as V, u as H } from "./activity-DecWPHxS.js";
4
4
  //#region node_modules/.pnpm/@tanstack+query-core@5.104.3/node_modules/@tanstack/query-core/build/modern/queriesObserver.js
5
5
  function U(e, t) {
6
6
  let n = new Set(t);