@lunora/d1 1.0.0-alpha.95 → 1.0.0-alpha.97

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/index.mjs CHANGED
@@ -1 +1 @@
1
- import{exportGlobalRows as o,importGlobalRows as t,selectGlobalTables as a}from"./packem_shared/exportGlobalRows-CZ8_RtFF.mjs";import{D1Client as i,D1Session as n}from"./packem_shared/D1Client-CzS0Qfa6.mjs";import{backfillD1SearchIndexes as D,createD1CtxDb as b,readD1CdcChanges as p,runD1AggregateMigrations as x,runD1CdcMigration as c,runD1GlobalTableMigrations as g,runD1RankMigrations as f,runD1SearchMigrations as m,sweepD1CdcRetention as C}from"./packem_shared/backfillD1SearchIndexes-Cmdl902w.mjs";import{facetGlobalColumn as d,listGlobalTables as G,readGlobalTablePage as M}from"./packem_shared/facetGlobalColumn-BPToW_z0.mjs";import{MigrationRunner as T}from"./packem_shared/MigrationRunner-SadkIbU5.mjs";import{D1TimeoutError as w,isTransientD1Error as S,retryingExec as y,withD1Retry as E}from"./packem_shared/D1TimeoutError-D4YUqZPk.mjs";import{default as q}from"./packem_shared/sqliteDialect-DZoYJOa-.mjs";import{applyCdcChanges as I}from"@lunora/shard-engine";import{createSqlCtxDb as j}from"@lunora/sql-store";export{i as D1Client,n as D1Session,w as D1TimeoutError,T as MigrationRunner,I as applyCdcChanges,D as backfillD1SearchIndexes,b as createD1CtxDb,j as createSqlCtxDb,o as exportGlobalRows,d as facetGlobalColumn,t as importGlobalRows,S as isTransientD1Error,G as listGlobalTables,p as readD1CdcChanges,M as readGlobalTablePage,y as retryingExec,x as runD1AggregateMigrations,c as runD1CdcMigration,g as runD1GlobalTableMigrations,f as runD1RankMigrations,m as runD1SearchMigrations,a as selectGlobalTables,q as sqliteDialect,C as sweepD1CdcRetention,E as withD1Retry};
1
+ import{exportGlobalRows as o,importGlobalRows as t,selectGlobalTables as a}from"./packem_shared/exportGlobalRows-DfPc1vS0.mjs";import{D1Client as i,D1Session as n}from"./packem_shared/D1Client-CzS0Qfa6.mjs";import{backfillD1SearchIndexes as D,createD1CtxDb as b,readD1CdcChanges as p,runD1AggregateMigrations as x,runD1CdcMigration as c,runD1GlobalTableMigrations as g,runD1RankMigrations as f,runD1SearchMigrations as m,sweepD1CdcRetention as C}from"./packem_shared/backfillD1SearchIndexes-Cmdl902w.mjs";import{facetGlobalColumn as d,listGlobalTables as G,readGlobalTablePage as M}from"./packem_shared/facetGlobalColumn-BPToW_z0.mjs";import{MigrationRunner as T}from"./packem_shared/MigrationRunner-SadkIbU5.mjs";import{D1TimeoutError as w,isTransientD1Error as S,retryingExec as y,withD1Retry as E}from"./packem_shared/D1TimeoutError-D4YUqZPk.mjs";import{default as q}from"./packem_shared/sqliteDialect-DZoYJOa-.mjs";import{applyCdcChanges as I}from"@lunora/shard-engine";import{createSqlCtxDb as j}from"@lunora/sql-store";export{i as D1Client,n as D1Session,w as D1TimeoutError,T as MigrationRunner,I as applyCdcChanges,D as backfillD1SearchIndexes,b as createD1CtxDb,j as createSqlCtxDb,o as exportGlobalRows,d as facetGlobalColumn,t as importGlobalRows,S as isTransientD1Error,G as listGlobalTables,p as readD1CdcChanges,M as readGlobalTablePage,y as retryingExec,x as runD1AggregateMigrations,c as runD1CdcMigration,g as runD1GlobalTableMigrations,f as runD1RankMigrations,m as runD1SearchMigrations,a as selectGlobalTables,q as sqliteDialect,C as sweepD1CdcRetention,E as withD1Retry};
@@ -0,0 +1 @@
1
+ import{toErrorBody as u}from"@lunora/errors";import{runD1GlobalTableMigrations as p}from"./backfillD1SearchIndexes-Cmdl902w.mjs";import{quoteIdentifier as f}from"./quoteIdentifier-CObIFRhb.mjs";import{decodeGlobalRow as w}from"@lunora/sql-store";const R=200,g=(n,o)=>{const r=t=>n.tables[t]?.shardMode?.kind==="global";return o&&o.length>0?o.filter(t=>r(t)):Object.keys(n.tables).filter(t=>r(t))},m=(n,o,r)=>{const t=n.tables[o];return t?w(t,r):{_creationTime:r._creationTime,_id:r.id}},L=async function*(n,o,r){const t=g(o,r.tables),s=r.batchSize??R;await p(n,o);for(const i of t){const e=f(i);let c,l=!0;for(;l;){const a=c===void 0?await n.all(`SELECT * FROM ${e} ORDER BY "id" LIMIT ?`,[s]):await n.all(`SELECT * FROM ${e} WHERE "id" > ? ORDER BY "id" LIMIT ?`,[c,s]);for(const b of a)yield{doc:m(o,i,b),table:i};const d=a.at(-1);d!==void 0&&(c=String(d.id)),l=a.length===s}}},E=(n,o,r)=>{const t=n.tables[o];if(!t)return`unknown table: ${o}`;for(const[s,i]of Object.entries(t.shape)){const e=r[s],c=i.kind==="optional";if(e===void 0&&c)continue;const l=i.parse;if(typeof l=="function")try{l(e)}catch(a){const d=a instanceof Error?a.message:String(a);return`field "${s}": ${d}`}}},k=async(n,o,r,t)=>{try{return o?(await o.all(`SELECT 1 AS hit FROM ${f(r)} WHERE "id" = ? LIMIT 1`,[t])).length>0:await n.get(t)!==null}catch{return!1}},y=async(n,o,r,t,s)=>{const{doc:i,table:e}=t;if(typeof e!="string"||e.length===0)return{error:{code:"BAD_ROW",line:s,message:"row is missing `table`",table:e},kind:"error"};if(o.tables[e]?.shardMode?.kind!=="global")return{kind:"skip"};if(!i||typeof i!="object"||Array.isArray(i))return{error:{code:"BAD_ROW",line:s,message:"row is missing or malformed `doc`",table:e},kind:"error"};const c=E(o,e,i);if(c!==void 0)return{error:{code:"VALIDATION_ERROR",line:s,message:c,table:e},kind:"error"};const l=typeof i._id=="string"?i._id:void 0;if(l!==void 0&&await k(n,r.exec,e,l))return{kind:"conflict"};try{return await n.insert(e,i,{allowExplicitId:!0}),{inserted:e,kind:"inserted"}}catch(a){const{body:d}=u(a,{fallbackCode:"INSERT_FAILED"});return{error:{code:d.code,line:s,message:d.message,table:e},kind:"error"}}},_=async(n,o,r)=>{const t=[],s={};let i=0,e=(r.startLine??1)-1;for(const c of r.rows){e+=1;const l=c.line??e,a=await y(n,o,r,c,l);switch(a.kind){case"conflict":{i+=1;break}case"error":{t.push(a.error);break}case"inserted":{s[a.inserted]=(s[a.inserted]??0)+1;break}}}return{conflicts:i,errors:t,inserted:s}};export{L as exportGlobalRows,_ as importGlobalRows,g as selectGlobalTables};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lunora/d1",
3
- "version": "1.0.0-alpha.95",
3
+ "version": "1.0.0-alpha.97",
4
4
  "description": "D1 adapter for Lunora .global() tables, wrapping the Sessions API for read-your-writes",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -50,10 +50,10 @@
50
50
  "access": "public"
51
51
  },
52
52
  "dependencies": {
53
- "@lunora/errors": "1.0.0-alpha.24",
54
- "@lunora/platform": "1.0.0-alpha.19",
55
- "@lunora/shard-engine": "1.0.0-alpha.45",
56
- "@lunora/sql-store": "1.0.0-alpha.97",
53
+ "@lunora/errors": "1.0.0-alpha.25",
54
+ "@lunora/platform": "1.0.0-alpha.20",
55
+ "@lunora/shard-engine": "1.0.0-alpha.46",
56
+ "@lunora/sql-store": "1.0.0-alpha.99",
57
57
  "drizzle-orm": "^0.45.2"
58
58
  },
59
59
  "engines": {
@@ -1 +0,0 @@
1
- import{toErrorBody as u}from"@lunora/errors";import{runD1GlobalTableMigrations as p}from"./backfillD1SearchIndexes-Cmdl902w.mjs";import{quoteIdentifier as f}from"./quoteIdentifier-CObIFRhb.mjs";import{decodeGlobalRow as w}from"@lunora/sql-store";const E=200,R=(i,o)=>{const e=t=>i.tables[t]?.shardMode?.kind==="global";return o&&o.length>0?o.filter(t=>e(t)):Object.keys(i.tables).filter(t=>e(t))},m=(i,o,e)=>{const t=i.tables[o];return t?w(t,e):{_creationTime:e._creationTime,_id:e.id}},O=async function*(i,o,e){const t=R(o,e.tables),s=e.batchSize??E;await p(i,o);for(const r of t){const n=f(r);let c,l=!0;for(;l;){const a=c===void 0?await i.all(`SELECT * FROM ${n} ORDER BY "id" LIMIT ?`,[s]):await i.all(`SELECT * FROM ${n} WHERE "id" > ? ORDER BY "id" LIMIT ?`,[c,s]);for(const b of a)yield{doc:m(o,r,b),table:r};const d=a.at(-1);d!==void 0&&(c=String(d.id)),l=a.length===s}}},k=(i,o,e)=>{const t=i.tables[o];if(!t)return`unknown table: ${o}`;for(const[s,r]of Object.entries(t.shape)){const n=e[s],c=r.kind==="optional";if(n===void 0&&c)continue;const l=r.parse;if(typeof l=="function")try{l(n)}catch(a){const d=a instanceof Error?a.message:String(a);return`field "${s}": ${d}`}}},g=async(i,o,e,t)=>{try{return o?(await o.all(`SELECT 1 AS hit FROM ${f(e)} WHERE "id" = ? LIMIT 1`,[t])).length>0:await i.get(t)!==null}catch{return!1}},y=async(i,o,e,t,s)=>{const{doc:r,table:n}=t;if(o.tables[n]?.shardMode?.kind!=="global")return{kind:"skip"};if(!r||typeof r!="object"||Array.isArray(r))return{error:{code:"BAD_ROW",line:s,message:"row is missing or malformed `doc`",table:n},kind:"error"};const c=k(o,n,r);if(c!==void 0)return{error:{code:"VALIDATION_ERROR",line:s,message:c,table:n},kind:"error"};const l=typeof r._id=="string"?r._id:void 0;if(l!==void 0&&await g(i,e.exec,n,l))return{kind:"conflict"};try{return await i.insert(n,r,{allowExplicitId:!0}),{inserted:n,kind:"inserted"}}catch(a){const{body:d}=u(a,{fallbackCode:"INSERT_FAILED"});return{error:{code:d.code,line:s,message:d.message,table:n},kind:"error"}}},v=async(i,o,e)=>{const t=[],s={};let r=0,n=(e.startLine??1)-1;for(const c of e.rows){n+=1;const l=c.line??n,a=await y(i,o,e,c,l);switch(a.kind){case"conflict":{r+=1;break}case"error":{t.push(a.error);break}case"inserted":{s[a.inserted]=(s[a.inserted]??0)+1;break}}}return{conflicts:r,errors:t,inserted:s}};export{O as exportGlobalRows,v as importGlobalRows,R as selectGlobalTables};