@lunora/shard-engine 1.0.0-alpha.12 → 1.0.0-alpha.13
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/conformance/index.mjs +1 -1
- package/dist/index.d.mts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.mjs +1 -1
- package/dist/packem_shared/ADMIN_FUNCTIONS-xKxYOiRC.mjs +1 -0
- package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-CTo0-9iZ.mjs +1 -0
- package/dist/packem_shared/AGG_COUNT-B0Pb1nQZ.mjs +1 -0
- package/dist/packem_shared/AUDIT_LOG_TABLE-C6nwXFPd.mjs +8 -0
- package/dist/packem_shared/CDC_LOG_TABLE-D__2M4gX.mjs +8 -0
- package/dist/packem_shared/{CLIENT_WATERMARK_TABLE-CXsSLU8D.mjs → CLIENT_WATERMARK_TABLE-CzApRlyv.mjs} +1 -1
- package/dist/packem_shared/CountRlsUnsupportedError-8BqPYQoP.mjs +1 -0
- package/dist/packem_shared/DATA_MIGRATION_STATE_TABLE-BrpAGtXf.mjs +31 -0
- package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-C7Iky4H5.mjs +1 -0
- package/dist/packem_shared/DEFAULT_MAX_RELAYS-AcHLNxha.mjs +1 -0
- package/dist/packem_shared/GEO_DEFAULT_PRECISION-DyI5zggj.mjs +1 -0
- package/dist/packem_shared/{GLOBAL_SHAPE_SNAPSHOT_TABLE-DX-6-gBP.mjs → GLOBAL_SHAPE_SNAPSHOT_TABLE-soMJDSBs.mjs} +1 -1
- package/dist/packem_shared/{IDEMPOTENCY_TABLE-DjkEMp6w.mjs → IDEMPOTENCY_TABLE-Bvu9JkiL.mjs} +1 -1
- package/dist/packem_shared/MAIL_RETENTION-BefR9Sei.mjs +18 -0
- package/dist/packem_shared/NotUniqueError-GHJiYnzm.mjs +1 -0
- package/dist/packem_shared/QUEUE_TABLE-DgBqWrXX.mjs +17 -0
- package/dist/packem_shared/RANK_TIEBREAK-D541BOFR.mjs +1 -0
- package/dist/packem_shared/RLS_UNWRAP_SYMBOL-DcqORh2s.mjs +1 -0
- package/dist/packem_shared/ReactiveCache-iWA9VRqk.mjs +1 -0
- package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-BEU0CuW5.mjs +6 -0
- package/dist/packem_shared/SEARCH_STATE_TABLE-BZ_fxI5l.mjs +1 -0
- package/dist/packem_shared/aggregateTableName-DKo6dwBP.mjs +1 -0
- package/dist/packem_shared/{applyOnDelete-uFRC5p1d.mjs → applyOnDelete-CxpItW0j.mjs} +1 -1
- package/dist/packem_shared/applySelect-BjgwvZmI.mjs +1 -0
- package/dist/packem_shared/awaitWsDrain-DKycCSBS.mjs +1 -0
- package/dist/packem_shared/backfillAggregateIndexes-BVNrfFcI.mjs +1 -0
- package/dist/packem_shared/buildSettings-COIJsw7a.mjs +1 -0
- package/dist/packem_shared/compileWhereSql-B4rPariq.mjs +1 -0
- package/dist/packem_shared/computeRankPage-B7U6t1fW.mjs +1 -0
- package/dist/packem_shared/createCompanionSync-Dym8huD9.mjs +1 -0
- package/dist/packem_shared/ctx-db-companions-7fIu-E2H.mjs +1 -0
- package/dist/packem_shared/{defineEngineContractSuite-DnGL8k8w.mjs → defineEngineContractSuite-Zg5xN9h4.mjs} +1 -1
- package/dist/packem_shared/exportShardRows-Bbi_JGfn.mjs +1 -0
- package/dist/packem_shared/{isSoftDeleted-DeUj28TM.mjs → isSoftDeleted-doD_8AwX.mjs} +1 -1
- package/dist/packem_shared/{materializeExternalRows-DH_xI7fa.mjs → materializeExternalRows-BR8MvZTz.mjs} +1 -1
- package/dist/packem_shared/quoteIdentifier-CObIFRhb.mjs +1 -0
- package/dist/packem_shared/runDrizzle-B6rnz3so.mjs +1 -0
- package/dist/packem_shared/runShardMigrations-DhZLG0bn.mjs +5 -0
- package/dist/packem_shared/{selectExpiredIds-DeNDLslI.mjs → selectExpiredIds-DxFEwNlT.mjs} +1 -1
- package/dist/packem_shared/{selectShapeMemberIds-C2z9QRg5.mjs → selectShapeMemberIds-BD3JiZn-.mjs} +1 -1
- package/package.json +2 -2
- package/dist/packem_shared/ADMIN_FUNCTIONS-vj2G8OR6.mjs +0 -1
- package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-QYaiuty4.mjs +0 -1
- package/dist/packem_shared/AGG_COUNT-bU-IX6a9.mjs +0 -1
- package/dist/packem_shared/AUDIT_LOG_TABLE-CaA0jL0L.mjs +0 -8
- package/dist/packem_shared/CDC_LOG_TABLE-Bh1V4Kd6.mjs +0 -8
- package/dist/packem_shared/CountRlsUnsupportedError-B2WKJD9v.mjs +0 -1
- package/dist/packem_shared/DATA_MIGRATION_STATE_TABLE-BZMVrLcy.mjs +0 -31
- package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-bq00btqV.mjs +0 -1
- package/dist/packem_shared/DEFAULT_MAX_RELAYS-CyHnBo4l.mjs +0 -1
- package/dist/packem_shared/FTS_COUNT_COLUMN-D1gY3wwZ-CZHdaRrd.mjs +0 -1
- package/dist/packem_shared/GEO_DEFAULT_PRECISION-okRCkZ6r.mjs +0 -1
- package/dist/packem_shared/MAIL_RETENTION-KmozO2NQ.mjs +0 -18
- package/dist/packem_shared/NotUniqueError-B6YgCluj.mjs +0 -1
- package/dist/packem_shared/QUEUE_TABLE-DYCDvzTG.mjs +0 -17
- package/dist/packem_shared/RANK_TIEBREAK-9NU5s_mi.mjs +0 -1
- package/dist/packem_shared/RLS_UNWRAP_SYMBOL-CBYPlYBb.mjs +0 -1
- package/dist/packem_shared/ReactiveCache-DsugPL74.mjs +0 -1
- package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-CHXz6p_z.mjs +0 -6
- package/dist/packem_shared/SEARCH_STATE_TABLE-eLN8U5tz.mjs +0 -1
- package/dist/packem_shared/aggregateTableName-G-eXyjcz.mjs +0 -1
- package/dist/packem_shared/applySelect-B0CF8T7y.mjs +0 -1
- package/dist/packem_shared/awaitWsDrain-B6fvyq9n.mjs +0 -1
- package/dist/packem_shared/backfillAggregateIndexes-Bj8UVaWL.mjs +0 -1
- package/dist/packem_shared/buildSettings-DT18_DkX.mjs +0 -1
- package/dist/packem_shared/compileWhereSql-BLcfs4QW.mjs +0 -1
- package/dist/packem_shared/computeRankPage-IUSS-zIB.mjs +0 -1
- package/dist/packem_shared/createCompanionSync-CGkMct7-.mjs +0 -1
- package/dist/packem_shared/exportShardRows-kt42wijd.mjs +0 -1
- package/dist/packem_shared/quote-identifier-CGiYFBvY.mjs +0 -1
- package/dist/packem_shared/runDrizzle-GKR3y97k.mjs +0 -1
- package/dist/packem_shared/runShardMigrations-bUJf9Tc5.mjs +0 -5
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const g=(e,t)=>e<t?-1:e>t?1:0,r=(e,t)=>`${e}__agg_${t}`,n=e=>{if(typeof e=="number")return Number.isFinite(e)?e:void 0},c=(e,t,l,a)=>{const u=e.get(t)??{count:0,value:null};if(l.op==="count"){u.count+=1,u.value=u.count,e.set(t,u);return}const o=n(a[l.field??""]);if(l.op==="sum"||l.op==="avg"){o!==void 0&&(u.value=(u.value??0)+o,u.count+=1),e.set(t,u);return}u.count+=1,o!==void 0&&(u.value===null?u.value=o:u.value=l.op==="min"?Math.min(u.value,o):Math.max(u.value,o)),e.set(t,u)},v=(e,t)=>e==="count"?t?.value??0:!t||t.count===0?null:e==="avg"?t.value===null?null:t.value/t.count:t.value,i=(e,t)=>{if(e.length===0)return"";const l={};for(const a of[...e].toSorted(g))l[a]=t[a]??null;return JSON.stringify(l)};export{r as aggregateTableName,n as coerceAggregateNumber,i as encodeAggregateKey,c as foldAggregateTally,v as readAggregateValue};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{LunoraError as m}from"@lunora/errors";const u="id",h=new Set(["_id","id"]),b=t=>{const e=[];for(const r of t??[])for(const[o,s]of Object.entries(r))e.push({direction:s,field:o});return e.length===0?[{direction:"asc",field:"_creationTime"}]:e},S=t=>{const e=new TextEncoder().encode(t);let r="";for(const o of e)r+=String.fromCodePoint(o);return btoa(r)},g=t=>{const e=atob(t),r=Uint8Array.from(e,o=>o.codePointAt(0)??0);return new TextDecoder().decode(r)},A=(t,e)=>{const r=e.map(o=>t[o.field]);return r.push(t._id),S(JSON.stringify(r))},l=()=>new m("BAD_REQUEST","invalid cursor"),D=t=>{let e;try{e=JSON.parse(g(t))}catch{throw l()}if(!Array.isArray(e))throw l();return e},_=(t,e)=>{const r=t.some(s=>h.has(s.field))?t:[...t,{direction:"asc",field:u}],o=[];for(const[s,n]of r.entries()){const i=[];for(const[d,a]of r.slice(0,s).entries())i.push({[a.field]:{eq:e[d]}});const f=n.direction==="desc"?"lt":"gt";i.push({[n.field]:{[f]:e[s]}});const[c]=i;o.push(i.length===1&&c!==void 0?c:{AND:i})}return{OR:o}},y=(t,e)=>t==="desc"?e?"gte":"gt":e?"lte":"lt",v=(t,e)=>{const r=t.some(s=>h.has(s.field))?t:[...t,{direction:"asc",field:u}],o=[];for(const[s,n]of r.entries()){const i=[];for(const[a,p]of r.slice(0,s).entries())i.push({[p.field]:{eq:e[a]}});const f=s===r.length-1,c=y(n.direction,f);i.push({[n.field]:{[c]:e[s]}});const[d]=i;o.push(i.length===1&&d!==void 0?d:{AND:i})}return{OR:o}},w=["_id","_creationTime"],E=(t,e,r)=>{if(!e)return t;const o=new Set([...e,...w,...r?Object.keys(r):[]]);return t.map(s=>{const n={};for(const i of o)i in s&&(n[i]=s[i]);return n})},N=(t,e)=>t&&e!==!0?{[t.field]:{isNull:!0}}:void 0;export{E as applySelect,v as buildSeekBeforeWhere,_ as buildSeekWhere,D as decodeCursor,A as encodeCursor,g as fromBase64,l as invalidCursor,b as normalizeOrderKeys,N as softDeleteScope,S as toBase64};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as l}from"./wire-codec-D_fiax9d.mjs";const c="_id",p="__lunora__",b=r=>{if(typeof r!="object"||r===null||Array.isArray(r))return;const t=r[c];return typeof t=="string"?t:void 0},y=r=>{const t=new Map,o=[];for(const s of r){const e=b(s);if(e===void 0||t.has(e))return;t.set(e,s),o.push(e)}return{byId:t,order:o}},g=(r,t)=>{const o=r.order.filter(e=>t.byId.has(e)),s=t.order.filter(e=>r.byId.has(e));return o.length!==s.length?!1:o.every((e,n)=>s[n]===e)},h=(r,t,o,s)=>{const e=[];for(const n of r.order)t.byId.has(n)||e.push({delta:{key:n,op:"delete",table:o},frame:`{"key":${JSON.stringify(n)},"op":"delete","table":${s}}`});return e},m=(r,t,o,s)=>{const e=[];for(const n of t.order){const i=t.byId.get(n),a=r.byId.get(n),f=JSON.stringify(l(i)),d=a===void 0?void 0:JSON.stringify(a);if(d===f)continue;const u=d===void 0?"insert":"update";e.push({delta:{key:n,op:u,row:i,table:o},frame:`{"key":${JSON.stringify(n)},"op":"${u}","row":${f},"table":${s}}`})}return e},S=(r,t,o,s)=>{let e;try{e=JSON.parse(r)}catch{return}if(!Array.isArray(e)||!Array.isArray(t))return;const n=y(e),i=y(t);if(n===void 0||i===void 0||!g(n,i))return;const a=o===""?p:o,f=JSON.stringify(a),d=[...h(n,i,a,f),...m(n,i,a,f)];if(!(d.length>i.order.length)){if(s!==void 0)for(const{frame:u}of d)s.push(u);return d.map(({delta:u})=>u)}},$=(r,t)=>{try{return r.send(t),!0}catch{return!1}},I=(r,t,o,s,e)=>{const n=JSON.stringify(t),i=e===void 0?"":`,"lastMutationId":${String(e)}`;let a=!0;for(const f of o)$(r,`{"type":"delta","id":${n},"delta":${f}${i}${s}}`)||(a=!1);return a},w=async r=>{let t=0;for(;t<100;){t+=1;const{bufferedAmount:o}=r;if(typeof o!="number"||o<1048576)return;await new Promise(s=>{setTimeout(s,20)})}};export{w as awaitWsDrain,I as sendDeltaFrames,S as subscriptionListDeltas,$ as trySendFrame};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as R,T,l as I,y as O,c as A}from"./FTS_COUNT_COLUMN-D1gY3wwZ-CZHdaRrd.mjs";import"@lunora/errors";import{sql as e}from"drizzle-orm";import{matchesStaticWhere as b}from"./AGGREGATE_SQL_FUNCTION-QYaiuty4.mjs";import{encodeAggregateKey as _,foldAggregateTally as L,aggregateTableName as M}from"./aggregateTableName-G-eXyjcz.mjs";import{migrateSearchState as k,readSearchBackfillState as w,writeSearchBackfillState as C}from"./SEARCH_STATE_TABLE-eLN8U5tz.mjs";import{runDrizzle as c}from"./runDrizzle-GKR3y97k.mjs";import{isFtsAvailable as u,DOC_COLUMN as g,rowToDocument as p,AGG_KEY as y,AGG_VALUE as N,AGG_COUNT as x,tryRowToDocument as F}from"./AGG_COUNT-bU-IX6a9.mjs";import{param as D}from"./param-B5lF5Jd9.mjs";import{sortColumnName as U,matchesRankStaticWhere as B,encodePartitionKey as G,rankTableName as j}from"./RANK_TIEBREAK-9NU5s_mi.mjs";import{serializeSqlValue as v}from"./serializeSqlValue-DnpyaLcw.mjs";const V=(i,t)=>i.profile!==t?{cursor:void 0,finished:!1,wipe:i.cursor!==void 0||i.done}:{cursor:i.cursor,finished:i.done,wipe:!1},W=(i,t,r)=>{const o=M(t,r.name);if(c(i,e`SELECT COUNT(*) AS count FROM ${e.identifier(o)}`).one().count>0)return;const n=r.by??[],s=new Map,d=c(i,e`SELECT id, _creationTime, ${e.identifier(g)} FROM ${e.identifier(t)}`).toArray();for(const f of d){const a=p(f);if(!a||r.where&&!b(a,r.where))continue;const m=_(n,a);L(s,m,r,a)}for(const[f,a]of s)c(i,e`INSERT INTO ${e.identifier(o)} (${y}, ${N}, ${x}) VALUES (${f}, ${a.value}, ${a.count})`)},oe=(i,t)=>{for(const[r,o]of Object.entries(t.tables))if(!(o.shardMode?.kind==="global"||!o.aggregateIndexes))for(const n of o.aggregateIndexes)W(i,r,n)},z=(i,t,r)=>{const o=j(t,r.name);if(c(i,e`SELECT COUNT(*) AS count FROM ${e.identifier(o)}`).one().count>0)return;const n=r.sortBy.map((f,a)=>U(a)),s=e.join(["__id__","__partition__",...n].map(f=>e.identifier(f)),e`, `),d=c(i,e`SELECT id, _creationTime, ${e.identifier(g)} FROM ${e.identifier(t)}`).toArray();for(const f of d){const a=p(f);if(!a||r.where&&!B(a,r.where))continue;const m=G(r.partitionBy??[],a),E=r.sortBy.map($=>v(a[$.field]??null)),l=e.join([a._id,m,...E].map($=>D($)),e`, `);c(i,e`INSERT INTO ${e.identifier(o)} (${s}) VALUES (${l})`)}},re=(i,t)=>{for(const[r,o]of Object.entries(t.tables))if(!(o.shardMode?.kind==="global"||!o.rankIndexes))for(const n of o.rankIndexes)z(i,r,n)},S=500,h=(i,t,r)=>{const o=A(t,r.name),{profile:n}=R(r.language),s=V(w(i,o),n);if(s.finished)return!0;s.wipe&&c(i,e`DELETE FROM ${e.identifier(o)}`);const{cursor:d}=s,f=c(i,d===void 0?e`SELECT id, _creationTime, ${e.identifier(g)} FROM ${e.identifier(t)} ORDER BY id ASC LIMIT ${e.raw(String(S))}`:e`SELECT id, _creationTime, ${e.identifier(g)} FROM ${e.identifier(t)} WHERE id > ${d} ORDER BY id ASC LIMIT ${e.raw(String(S))}`).toArray();let a=d;for(const E of f){const{id:l}=E;if(typeof l!="string")continue;a=l;const $=F(E);if(!$){c(i,e`DELETE FROM ${e.identifier(o)} WHERE ${e.identifier(T)} = ${l}`);continue}c(i,e`DELETE FROM ${e.identifier(o)} WHERE ${e.identifier(T)} = ${l}`),c(i,e`INSERT INTO ${e.identifier(o)} (${e.identifier(I)}, ${e.identifier(T)}) VALUES (${O($,r)}, ${l})`)}const m=f.length<S;return C(i,o,a,m,n),m},te=(i,t,r)=>{if(u(i))for(const o of r.searchIndexes??[])o.staged||h(i,t,o)},ae=(i,t)=>{if(u(i)){k(i);for(const[r,o]of Object.entries(t.tables))if(!(o.shardMode?.kind==="global"||!o.searchIndexes))for(const n of o.searchIndexes){let s=!1;for(;!s;)s=h(i,r,n)}}};export{oe as backfillAggregateIndexes,re as backfillRankIndexes,ae as backfillSearchIndexes,te as backfillSearchIndexesForTable};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const a=/key|secret|token|password|passwd|credential|private|auth|bearer|session|cookie|salt|signature|dsn|webhook/iu,c=new Set(["LUNORA_ADMIN_TOKEN","LUNORA_WS_BEARER"]),l=["CF_PAGES_URL","WORKER_URL","LUNORA_WORKER_URL"],s=["CF_ENV","ENVIRONMENT","WORKER_ENV","NODE_ENV"],u=n=>n.length<=4?"••••":`${n.slice(0,4)}${"•".repeat(Math.min(8,n.length-4))}`,p=n=>a.test(n),f=n=>{const e=o=>typeof n[o]=="function";return e("idFromName")||e("idFromString")?"durable-object":e("createMultipartUpload")||e("put")&&e("get")&&e("list")&&e("head")?"r2":e("getWithMetadata")?"kv":e("prepare")&&e("dump")?"d1":e("send")&&e("sendBatch")?"queue":e("fetch")&&!e("get")?"service":"object"},d=n=>{const e={};for(const t of l)if(typeof n[t]=="string"&&n[t]!==""){e.workerUrl=n[t];break}for(const t of s)if(typeof n[t]=="string"&&n[t]!==""){e.environment=n[t];break}const o=n.CF_VERSION_METADATA;if(o!==null&&typeof o=="object"){const t=o;typeof t.id=="string"&&(e.deploymentId=t.id),typeof t.tag=="string"&&(e.versionTag=t.tag)}return e},g=/^(?:dev(?:elopment)?|local(?:host)?|test)$/iu,m=n=>{const e=n??{};for(const o of s){const t=e[o];if(typeof t=="string"&&g.test(t))return!0}return!1},y=n=>{const e=n??{},o=[];for(const[t,r]of Object.entries(e))if(!c.has(t)){if(typeof r=="string"){const i=p(t);o.push({kind:i?"secret":"var",name:t,value:u(r)});continue}if(typeof r=="number"||typeof r=="boolean"){o.push({kind:"var",name:t,value:String(r)});continue}if(r!==null&&typeof r=="object"){o.push({bindingType:f(r),kind:"binding",name:t,value:null});continue}o.push({kind:"var",name:t,value:null})}return o.sort((t,r)=>t.name.localeCompare(r.name)),{deploy:d(e),settings:o}};export{f as bindingType,y as buildSettings,m as isDevEnvironment,p as looksSecret,d as readDeployInfo,u as redact};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{LunoraError as $}from"@lunora/errors";import{sql as i}from"drizzle-orm";const c="__relationExists",N=["eq","ne","lt","lte","gt","gte","in","notIn","isNull","contains"],h=new Set(N),p={eq:"=",gt:">",gte:">=",lt:"<",lte:"<=",ne:"<>"},I=r=>{if(r===null||typeof r!="object"||Array.isArray(r))return!1;const e=Object.keys(r);return e.length>0&&e.every(t=>h.has(t))},g=r=>typeof r=="string"?r.replaceAll(/[\\%_]/g,e=>`\\${e}`):r,L=(r,e,t)=>{const s=i`${t.serialize(g(e))}`;return t.likeContains?t.likeContains(r,s):i`${r} LIKE '%' || ${s} || '%' ESCAPE '\\'`},O=(r,e,t,s,o)=>s===null?e==="ne"?i`${r} IS NOT NULL`:i`${r} IS NULL`:i`${r} ${i.raw(t)} ${o.serialize(s)}`,y=(r,e,t,s)=>{const o=Array.isArray(t)?t:[];if(o.length===0)return e==="IN"?i`0 = 1`:i`1 = 1`;const n=i.join(o.map(l=>i`${s.serialize(l)}`),i`, `);return e==="IN"?i`${r} IN (${n})`:i`${r} NOT IN (${n})`},S=(r,e,t)=>{const s=e,o=[];for(const n of N){if(!(n in s))continue;const l=s[n],u=p[n];u?o.push(O(r,n,u,l,t)):n==="isNull"?o.push(l?i`${r} IS NULL`:i`${r} IS NOT NULL`):n==="contains"?o.push(L(r,l,t)):o.push(y(r,n==="in"?"IN":"NOT IN",l,t))}return o},A=(r,e,t)=>{const s=t.fieldRef(r);return I(e)?S(s,e,t):e===null?[i`${s} IS NULL`]:[i`${s} = ${t.serialize(e)}`]},f=(r,e)=>{if(r.length!==0)return r.length===1?r[0]:i.join(r.map(t=>i`(${t})`),i` ${i.raw(e)} `)},E=(r,e,t)=>{const s=Array.isArray(r)?r:[],o=[];for(const n of s){const l=a(n??{},t);l&&o.push(l)}return o.length===0?e==="OR"?i`0 = 1`:void 0:f(o,e)},m=new Set(["AND","NOT","OR",c]),T=(r,e,t)=>{if(r===c){if(!t.relationExists)throw new $("INTERNAL","encountered a relation EXISTS marker without a relationExists strategy hook");return t.relationExists(e)}if(r==="NOT"){const s=a(e??{},t);return s?i`NOT (${s})`:void 0}return E(e,r,t)},a=(r,e)=>{const t=[];for(const[s,o]of Object.entries(r))if(m.has(s)){const n=T(s,o,e);n&&t.push(n)}else t.push(...A(s,o,e));return f(t,"AND")},j=(r,e)=>{if(!(!r||Object.keys(r).length===0))return a(r,e)};export{j as compileWhereSql};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{LunoraError as A}from"@lunora/errors";import{sql as t}from"drizzle-orm";import{mergeWhere as O}from"./CountRlsUnsupportedError-B2WKJD9v.mjs";import{SCAN_DEP as q}from"./SCAN_DEP-D_yR9EeV.mjs";import{runDrizzle as C}from"./runDrizzle-GKR3y97k.mjs";import{param as v}from"./param-B5lF5Jd9.mjs";import{decodeCursor as W}from"./applySelect-B0CF8T7y.mjs";import{sortColumnName as z,resolveRankPartition as F,RANK_TIEBREAK as m,encodePartitionKey as H,rankTableName as J}from"./RANK_TIEBREAK-9NU5s_mi.mjs";const V="__doc__",Y=o=>{const i=JSON.stringify(o),a=new TextEncoder().encode(i);let n="";for(const e of a)n+=String.fromCodePoint(e);return btoa(n)},G=o=>o.after?[o.after.partitionKey,...o.after.sortValues,o.after.rowId]:o.cursor?W(o.cursor):void 0,U=(o,i,a)=>{if(o?.length!==1+i.length+1)return;const n=[{column:"__partition__",direction:"asc"}];for(const[c,f]of i.entries())n.push({column:f,direction:a[c]?.direction??"asc"});n.push({column:m,direction:"asc"});const e=[];for(const[c,f]of n.entries()){const s=[];for(const[r,$]of n.slice(0,c).entries())s.push(t`${t.identifier($.column)} IS ${o[r]}`);s.push(t`${t.identifier(f.column)} ${t.raw(f.direction==="desc"?"<":">")} ${o[c]}`);const[d]=s;e.push(s.length===1&&d!==void 0?d:t`(${t.join(s,t` AND `)})`)}return t`(${t.join(e,t` OR `)})`},S=null,X=(o,i)=>{if(o===void 0)return S;const a=[o.__partition__,...i.map(n=>o[n]),o[m]];return Y(a)},Z=(o,i,a)=>{const n=[];for(const e of o){const c=e[m];if(typeof c!="string")continue;const f=i.get(c);if(!f)continue;const s=typeof e.__partition__=="string"?e.__partition__:"",d=a.map(r=>e[r]??null);n.push({doc:f,key:{partitionKey:s,rowId:c,sortValues:d}})}return n},Q=(o,i,a)=>{const{rowToDocument:n}=o,e=new Map;if(a.length===0)return e;const c=t.join(a.map(s=>v(s)),t`, `),f=C(o.sql,t`SELECT id, _creationTime, ${t.identifier(V)} FROM ${t.identifier(i)} WHERE id IN (${c})`).toArray();for(const s of f){const d=n(s),r=s.id;d&&typeof r=="string"&&e.set(r,d)}return e},ct=(o,i,a,n)=>{const{assertRankPartitionLocal:e,ensureRankBackfilled:c,onRead:f,schema:s}=o,d=s.tables[i];if(!d)throw new A("INTERNAL",`unknown table: ${i}`);const r=d.rankIndexes?.find(p=>p.name===a);if(!r)throw new A("INTERNAL",`unknown rankIndex "${a}" on table "${i}"`);e(i,d,r),f(i,q),c(i,r);const $=J(i,r.name),u=r.sortBy.map((p,E)=>z(E)),l=Math.max(1,Math.min(1e3,Math.floor(n.take??100))),T=O(n.baseWhere,n.where),R=F(r,T),h=[t`${t.identifier("__partition__")} ASC`];for(const[p,E]of u.entries()){const x=r.sortBy[p]?.direction;h.push(t`${t.identifier(E)} ${t.raw(x==="desc"?"DESC":"ASC")}`)}h.push(t`${t.identifier(m)} ASC`);const _=[];typeof n.partitionKey=="string"?_.push(t`${t.identifier("__partition__")} = ${n.partitionKey}`):R&&_.push(t`${t.identifier("__partition__")} = ${H(r.partitionBy??[],R)}`);const B=G(n),k=U(B,u,r.sortBy);k&&_.push(k);const I=t.identifier(m),N=t.identifier("__partition__"),M=_.length>0?t` WHERE ${t.join(_,t` AND `)}`:t``,D=u.length>0?t`${I}, ${N}, ${t.join(u.map(p=>t.identifier(p)),t`, `)}`:t`${I}, ${N}`,K=t`SELECT ${D} FROM ${t.identifier($)}${M} ORDER BY ${t.join(h,t`, `)} LIMIT ${t.raw(String(l+1))}`,y=C(o.sql,K).toArray(),g=y.length>l,w=g?y.slice(0,l):y,L=w.map(p=>p[m]),b=Z(w,Q(o,i,L),u),j=g?X(w.at(-1),u):S,P=r.sortBy.map(p=>p.direction==="desc"?"desc":"asc");return{continueCursor:j,directions:P,hasMore:g,rows:b}};export{ct as computeRankPage,Q as hydrateDocsById};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as ee,T as G,l as ne,y as ie,c as oe}from"./FTS_COUNT_COLUMN-D1gY3wwZ-CZHdaRrd.mjs";import"@lunora/errors";import{sql as e}from"drizzle-orm";import{matchesStaticWhere as U,aggregateSqlFunction as te}from"./AGGREGATE_SQL_FUNCTION-QYaiuty4.mjs";import{encodeAggregateKey as b,foldAggregateTally as re,aggregateTableName as H,coerceAggregateNumber as B}from"./aggregateTableName-G-eXyjcz.mjs";import{runDrizzle as l}from"./runDrizzle-GKR3y97k.mjs";import{isFtsAvailable as ae,DOC_COLUMN as V,rowToDocument as K,AGG_KEY as R,AGG_VALUE as _,AGG_COUNT as m,geoTableName as se,aggUpsertSql as x,jsonPathSql as O}from"./AGG_COUNT-bU-IX6a9.mjs";import{param as P}from"./param-B5lF5Jd9.mjs";import{encodeGeohash as $e,GEO_DEFAULT_PRECISION as ce}from"./GEO_DEFAULT_PRECISION-okRCkZ6r.mjs";import{sortColumnName as z,matchesRankStaticWhere as J,encodePartitionKey as X,rankTableName as Y}from"./RANK_TIEBREAK-9NU5s_mi.mjs";import{serializeSqlValue as M}from"./serializeSqlValue-DnpyaLcw.mjs";const fe=(y,I,h)=>[...y.partitionBy??[],...y.sortBy.map(T=>T.field),...y.where?Object.keys(y.where):[]].every(T=>I[T]===h[T]),le=(y,I,h,T,L,g)=>{if(L&&g&&fe(h,L,g))return;const s=Y(I,h.name);if(L&&l(y,e`DELETE FROM ${e.identifier(s)} WHERE ${e.identifier("__id__")} = ${T}`),!g||h.where&&!J(g,h.where))return;const N=h.sortBy.map((S,F)=>z(F)),v=e.join(["__id__","__partition__",...N].map(S=>e.identifier(S)),e`, `),C=X(h.partitionBy??[],g),w=h.sortBy.map(S=>M(g[S.field]??null)),D=e.join([T,C,...w].map(S=>P(S)),e`, `);l(y,e`INSERT INTO ${e.identifier(s)} (${v}) VALUES (${D})`)},Ae=y=>{const{broadcast:I,indexKeysFor:h,invalidateCache:T,recordCdc:L,schema:g,sql:s}=y,N=new Set,v=new Set,C=(i,n)=>{const o=`${i}::${n.name}`;if(N.has(o))return;const c=H(i,n.name),r=n.by??[],d=new Map,f=l(s,e`SELECT id, _creationTime, ${e.identifier(V)} FROM ${e.identifier(i)}`).toArray();for(const $ of f){const t=K($);if(!t||n.where&&!U(t,n.where))continue;const E=b(r,t);re(d,E,n,t)}l(s,e`DELETE FROM ${e.identifier(c)}`);const p=32,a=[...d];for(let $=0;$<a.length;$+=p){const t=a.slice($,$+p),E=e.join(t.map(([u,A])=>e`(${u}, ${A.value}, ${A.count})`),e`, `);l(s,e`INSERT INTO ${e.identifier(c)} (${R}, ${_}, ${m}) VALUES ${E}`)}N.add(o)},w=(i,n,o)=>{const c=n.by??[],r=te(n.op),d=n.field??"",f=[];for(const $ of c){const t=M(o[$]??null);t===null?f.push(e`${O($)} IS NULL`):f.push(e`${O($)} = ${t}`)}for(const[$,t]of Object.entries(n.where??{})){const E=t!==null&&typeof t=="object"&&!Array.isArray(t)?t.eq:t,u=M(E);u===null?f.push(e`${O($)} IS NULL`):f.push(e`${O($)} = ${u}`)}const p=f.length>0?e` WHERE ${e.join(f,e` AND `)}`:e``,a=O(d);return{value:l(s,e`SELECT ${e.raw(r)}(${a}) AS value FROM ${e.identifier(i)}${p}`).one().value??null}},D=(i,n,o,c)=>{const r=H(i,n.name),{op:d}=n,f=n.field??"",p=t=>{l(s,e`DELETE FROM ${e.identifier(r)} WHERE ${R} = ${t} AND ${m} <= 0`)},a=o&&(!n.where||U(o,n.where))?o:void 0,$=c&&(!n.where||U(c,n.where))?c:void 0;if(!(!a&&!$)){if(d==="count"){for(const[t,E]of[[a,-1],[$,1]]){if(!t)continue;const u=b(n.by??[],t);l(s,x(r,u,E,E,e`${_} = ${_} + excluded.${_}, ${m} = ${m} + excluded.${m}`))}a&&p(b(n.by??[],a));return}if(d==="sum"||d==="avg"){for(const[t,E]of[[a,-1],[$,1]]){if(!t)continue;const u=B(t[f]);if(u===void 0)continue;const A=b(n.by??[],t);l(s,x(r,A,E*u,E,e`${_} = COALESCE(${_}, 0) + excluded.${_}, ${m} = ${m} + excluded.${m}`))}a&&p(b(n.by??[],a));return}if(a){const t=b(n.by??[],a),E=B(a[f]),u=l(s,e`SELECT ${_} AS value, ${m} AS count FROM ${e.identifier(r)} WHERE ${R} = ${t}`).toArray()[0],A=(u?.count??0)-1;if(A<=0)l(s,e`DELETE FROM ${e.identifier(r)} WHERE ${R} = ${t}`);else if(u&&E!==void 0&&u.value!==null&&E===u.value){const Q=w(i,n,a);l(s,e`UPDATE ${e.identifier(r)} SET ${_} = ${Q.value}, ${m} = ${A} WHERE ${R} = ${t}`)}else l(s,e`UPDATE ${e.identifier(r)} SET ${m} = ${m} - 1 WHERE ${R} = ${t}`)}if($){const t=b(n.by??[],$),E=B($[f]);if(E===void 0)l(s,x(r,t,null,1,e`${m} = ${m} + 1`));else{const u=d==="min"?"MIN":"MAX";l(s,x(r,t,E,1,e`${_} = ${e.raw(u)}(COALESCE(${_}, excluded.${_}), excluded.${_}), ${m} = ${m} + 1`))}}}},S=i=>{const n=g.tables[i]?.aggregateIndexes;if(!(!n||n.length===0))for(const o of n)C(i,o)},F=(i,n,o)=>{const c=g.tables[i]?.aggregateIndexes;if(!(!c||c.length===0))for(const r of c)D(i,r,n,o)},j=(i,n)=>{const o=`${i}::rank::${n.name}`;if(v.has(o))return;const c=Y(i,n.name),r=l(s,e`SELECT id, _creationTime, ${e.identifier(V)} FROM ${e.identifier(i)}`).toArray();l(s,e`DELETE FROM ${e.identifier(c)}`);const d=n.sortBy.map((p,a)=>z(a)),f=e.join(["__id__","__partition__",...d].map(p=>e.identifier(p)),e`, `);for(const p of r){const a=K(p);if(!a||n.where&&!J(a,n.where))continue;const $=X(n.partitionBy??[],a),t=n.sortBy.map(u=>M(a[u.field]??null)),E=e.join([a._id,$,...t].map(u=>P(u)),e`, `);l(s,e`INSERT INTO ${e.identifier(c)} (${f}) VALUES (${E})`)}v.add(o)},Z=i=>{const n=g.tables[i]?.rankIndexes;if(!(!n||n.length===0))for(const o of n)j(i,o)},W=(i,n,o,c)=>{const r=g.tables[i]?.rankIndexes;if(!(!r||r.length===0))for(const d of r)le(s,i,d,n,o,c)},k=(i,n,o,c)=>{const r=g.tables[i]?.searchIndexes;if(!(!r||r.length===0||!ae(s)))for(const d of r){if(ee(c,o,d))continue;const f=oe(i,d.name);l(s,e`DELETE FROM ${e.identifier(f)} WHERE ${e.identifier(G)} = ${n}`),o&&l(s,e`INSERT INTO ${e.identifier(f)} (${e.identifier(ne)}, ${e.identifier(G)}) VALUES (${ie(o,d)}, ${n})`)}},q=(i,n,o)=>{const c=g.tables[i]?.geoIndexes;if(!(!c||c.length===0))for(const r of c){const d=se(i,r.name);l(s,e`DELETE FROM ${e.identifier(d)} WHERE ${e.identifier("__id__")} = ${n}`);const f=o?.[r.field];if(f!==null&&typeof f=="object"&&typeof f.lat=="number"&&typeof f.lng=="number"){const{lat:p,lng:a}=f,$=$e({lat:p,lng:a},r.precision??ce);l(s,e`INSERT INTO ${e.identifier(d)} (${e.identifier("__id__")}, ${e.identifier("__geohash__")}, ${e.identifier("__lat__")}, ${e.identifier("__lng__")}) VALUES (${n}, ${$}, ${p}, ${a})`)}}};return{ensureBackfilledForTable:S,ensureBackfilledIndex:C,ensureRankBackfilled:j,ensureRankBackfilledForTable:Z,syncAggregates:F,syncCompanionsForInsert:(i,n,o)=>{k(i,n,o),q(i,n,o),F(i,void 0,o),W(i,n,void 0,o),T(i,n,o),L(i,n,"insert",o),I({indexKeys:h(i,o),key:n,op:"insert",row:o,table:i})},syncGeo:q,syncRanks:W,syncSearch:k}};export{Ae as createCompanionSync};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{toErrorBody as f}from"@lunora/errors";const d=200,b=(r,s)=>{const n=t=>{const e=r.tables[t];return e?e.shardMode?.kind!=="global":!1};if(s&&s.length>0){const t=[];for(const e of s)n(e)&&t.push(e);return t}const o=[];for(const t of Object.keys(r.tables))n(t)&&o.push(t);return o},u=async function*(r,s,n=d){let o=null,t=!1;for(;!t;){const e=await r.findMany(s,{cursor:o,limit:n});for(const a of e.page)yield{doc:a,table:s};o=e.continueCursor,t=e.isDone||o===null}},k=async function*(r,s,n){const o=b(s,n.tables),t=n.batchSize??d;for(const e of o)yield*u(r,e,t)},p=new Set(["_creationTime","_id"]),y=(r,s)=>{for(const[n,o]of Object.entries(r.shape)){const t=s[n];if(t===void 0&&o.kind==="optional")continue;const e=o.parse;if(typeof e=="function")try{e(t)}catch(a){const c=a instanceof Error?a.message:String(a);return`field "${n}": ${c}`}}},h=(r,s,n)=>{const o=r.tables[s];if(!o)return`unknown table: ${s}`;if(o.shardMode?.kind==="global")return`table "${s}" is a global (.global()) table and is not importable through the shard import path`;const t=Object.fromEntries(Object.entries(n).filter(([e])=>!p.has(e)));for(const e of Object.keys(t))if(!(e in o.shape))return`unexpected field "${e}": not declared in table "${s}"`;return y(o,t)},g=async(r,s)=>{try{return await r.get(s)!==null}catch{return!1}},m=async(r,s,n,o)=>{const{doc:t,table:e}=n;if(typeof e!="string"||e.length===0)return{error:{code:"BAD_ROW",line:o,message:"row is missing `table`",table:e},kind:"error"};if(!t||typeof t!="object"||Array.isArray(t))return{error:{code:"BAD_ROW",line:o,message:"row is missing or malformed `doc`",table:e},kind:"error"};const a=h(s,e,t);if(a!==void 0)return{error:{code:"VALIDATION_ERROR",line:o,message:a,table:e},kind:"error"};const c=typeof t._id=="string"?t._id:void 0;if(c!==void 0&&await g(r,c))return{kind:"conflict"};try{return await r.insert(e,t,{allowExplicitId:!0}),{kind:"inserted",table:e}}catch(i){const{body:l}=f(i,{fallbackCode:"INSERT_FAILED"});return{error:{code:l.code,line:o,message:l.message,table:e},kind:"error"}}},A=async(r,s,n)=>{const o=[],t={};let e=0,a=(n.startLine??1)-1;for(const c of n.rows){a+=1;const i=await m(r,s,c,a);i.kind==="error"?o.push(i.error):i.kind==="conflict"?e+=1:t[i.table]=(t[i.table]??0)+1}return{conflicts:e,errors:o,inserted:t}},S=r=>{const s=Array.isArray(r.tables)?r.tables.filter(n=>typeof n=="string"):void 0;return{batchSize:typeof r.batchSize=="number"?r.batchSize:void 0,tables:s}},E=r=>{const s=Array.isArray(r.rows)?r.rows:[],n=[];for(const t of s){if(!t||typeof t!="object")continue;const e=t;if(typeof e.table!="string"||!e.doc||typeof e.doc!="object"||Array.isArray(e.doc)){n.push({doc:e.doc??{},table:typeof e.table=="string"?e.table:""});continue}n.push({doc:e.doc,table:e.table})}const o=typeof r.startLine=="number"?r.startLine:void 0;return{rows:n,startLine:o}};export{k as exportShardRows,u as exportShardTable,A as importShardRows,S as parseExportShardArgs,E as parseImportShardArgs,b as selectExportTables,h as validateImportRow};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const t=e=>`"${e.replaceAll('"','""')}"`;export{t as q};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{renderSql as o}from"./param-B5lF5Jd9.mjs";const t=(r,e,...l)=>r.exec.call(r,e,...l),c=(r,e)=>{const{params:l,sql:n}=o("sqlite",e);return t(r,n,...l)};export{c as runDrizzle,t as runSql};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{l as I,T as N,c as l}from"./FTS_COUNT_COLUMN-D1gY3wwZ-CZHdaRrd.mjs";import"@lunora/errors";import{sql as e}from"drizzle-orm";import{aggregateTableName as S}from"./aggregateTableName-G-eXyjcz.mjs";import{backfillSearchIndexesForTable as g}from"./backfillAggregateIndexes-Bj8UVaWL.mjs";import{migrateCdcLog as p,migrateCdcMeta as h}from"./CDC_LOG_TABLE-Bh1V4Kd6.mjs";import{migrateClientWatermark as R}from"./CLIENT_WATERMARK_TABLE-CXsSLU8D.mjs";import{migrateGlobalShapeSnapshot as C}from"./GLOBAL_SHAPE_SNAPSHOT_TABLE-DX-6-gBP.mjs";import{migrateIdempotency as O}from"./IDEMPOTENCY_TABLE-DjkEMp6w.mjs";import{migrateSearchState as U}from"./SEARCH_STATE_TABLE-eLN8U5tz.mjs";import{runDrizzle as t}from"./runDrizzle-GKR3y97k.mjs";import{DOC_COLUMN as u,jsonPathSql as E,createIndexSql as T,tableColumns as b,isFtsAvailable as X,AGG_KEY as x,AGG_VALUE as B,AGG_COUNT as c,geoTableName as G}from"./AGG_COUNT-bU-IX6a9.mjs";import{sortColumnName as Y,rankTableName as F}from"./RANK_TIEBREAK-9NU5s_mi.mjs";import{recordSchemaVersion as M}from"./SCHEMA_HISTORY_MAX_VERSIONS-CHXz6p_z.mjs";const D=(r,o,a)=>{for(const i of a.indexes){const n=`${o}_${i.name}`,s=e.join(i.fields.map(f=>E(f)),e`, `);t(r,T(n,o,s,i.unique??!1))}for(const[i,n]of b(a)){if(!n.unique)continue;const s=`${o}_unique_${i}`;t(r,T(s,o,E(i),!0))}},k=(r,o,a)=>{if(!(!a.searchIndexes||a.searchIndexes.length===0||!X(r))){for(const i of a.searchIndexes){const n=l(o,i.name);t(r,e`CREATE VIRTUAL TABLE IF NOT EXISTS ${e.identifier(n)} USING fts5(${e.identifier(I)}, ${e.identifier(N)} UNINDEXED)`),t(r,e`CREATE VIRTUAL TABLE IF NOT EXISTS ${e.identifier(`${n}__vocab`)} USING fts5vocab(${e.identifier(n)}, ${e.raw("instance")})`)}g(r,o,a)}},j=(r,o,a)=>{if(a.geoIndexes)for(const i of a.geoIndexes){const n=G(o,i.name);t(r,e`CREATE TABLE IF NOT EXISTS ${e.identifier(n)} (${e.identifier("__id__")} TEXT PRIMARY KEY, ${e.identifier("__geohash__")} TEXT NOT NULL, ${e.identifier("__lat__")} REAL NOT NULL, ${e.identifier("__lng__")} REAL NOT NULL)`);const s=`${o}__geo_${i.name}__btree`;t(r,T(s,n,e`${e.identifier("__geohash__")} ASC, ${e.identifier("__id__")} ASC`,!1))}},q=(r,o,a)=>{if(a.aggregateIndexes)for(const i of a.aggregateIndexes){const n=S(o,i.name);t(r,e`CREATE TABLE IF NOT EXISTS ${e.identifier(n)} (${x} TEXT PRIMARY KEY, ${B} REAL, ${c} INTEGER NOT NULL DEFAULT 0)`),t(r,e`PRAGMA table_info(${e.identifier(n)})`).toArray().some(s=>s.name==="__count__")||t(r,e`ALTER TABLE ${e.identifier(n)} ADD COLUMN ${c} INTEGER NOT NULL DEFAULT 0`)}},P=(r,o,a)=>{if(a.rankIndexes)for(const i of a.rankIndexes){const n=F(o,i.name),s=i.sortBy.map((_,d)=>Y(d)),f=s.map(_=>e`${e.identifier(_)} BLOB`),$=f.length>0?e`, ${e.join(f,e`, `)}`:e``;t(r,e`CREATE TABLE IF NOT EXISTS ${e.identifier(n)} (${e.identifier("__id__")} TEXT PRIMARY KEY, ${e.identifier("__partition__")} TEXT NOT NULL${$})`);const m=[e`${e.identifier("__partition__")} ASC`];for(const[_,d]of s.entries()){const L=i.sortBy[_]?.direction;m.push(e`${e.identifier(d)} ${e.raw(L==="desc"?"DESC":"ASC")}`)}m.push(e`${e.identifier("__id__")} ASC`);const A=`${o}__rank_${i.name}__btree`;t(r,T(A,n,e.join(m,e`, `),!1))}},ne=(r,o,a={})=>{a.schemaSnapshot!==void 0&&M(r,a.schemaSnapshot.hash,a.schemaSnapshot.json),U(r);for(const[i,n]of Object.entries(o.tables))n.shardMode?.kind!=="global"&&(t(r,e`CREATE TABLE IF NOT EXISTS ${e.identifier(i)} (
|
|
2
|
-
id TEXT PRIMARY KEY,
|
|
3
|
-
_creationTime REAL NOT NULL,
|
|
4
|
-
${e.identifier(u)} TEXT NOT NULL
|
|
5
|
-
)`),D(r,i,n),k(r,i,n),j(r,i,n),q(r,i,n),P(r,i,n));a.cdc&&(p(r),h(r),R(r)),O(r),C(r)};export{ne as runShardMigrations};
|