@corsair-dev/googlesheets 0.1.4 → 0.1.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,uBAAuB,EAGvB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACX,0BAA0B,EAC1B,2BAA2B,EAC3B,MAAM,aAAa,CAAC;AAMrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EACX,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EACjB,MAAM,YAAY,CAAC;AAOpB,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CACrD,OAAO,kBAAkB,EACzB,yBAAyB,CACzB,CAAC;AAEF,KAAK,oBAAoB,CAAC,CAAC,SAAS,MAAM,2BAA2B,IACpE,eAAe,CACd,mBAAmB,EACnB,0BAA0B,CAAC,CAAC,CAAC,EAC7B,2BAA2B,CAAC,CAAC,CAAC,CAC9B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG;IACnC,kBAAkB,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAC/D,kBAAkB,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAC/D,gBAAgB,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,eAAe,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IACzD,uBAAuB,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IACzE,aAAa,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACrD,eAAe,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IACzD,gBAAgB,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,iBAAiB,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC7D,iBAAiB,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC7D,yBAAyB,EAAE,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAC7E,6BAA6B,EAAE,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;CACrF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,aAAa,CACrD,OAAO,2BAA2B,CAClC,CAAC;AAEF,KAAK,mBAAmB,CACvB,CAAC,SAAS,MAAM,0BAA0B,EAC1C,MAAM,IACH,cAAc,CACjB,mBAAmB,EACnB,0BAA0B,CAAC,MAAM,CAAC,EAClC,0BAA0B,CAAC,CAAC,CAAC,CAC7B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,YAAY,EAAE,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,YAAY,CACnD,OAAO,0BAA0B,CACjC,CAAC;AAEF,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;CAiBvB,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD9B,CAAC;AAEX,QAAA,MAAM,0BAA0B;;;;;;;;;CAEtB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GAAG;IACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,0BAA0B,CAAC,cAAc,CAAC,CAAC;IAC1D;;;;OAIG;IACH,WAAW,CAAC,EAAE,uBAAuB,CAAC,OAAO,2BAA2B,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACxC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;AAU9C,QAAA,MAAM,eAAe,EAAG,SAAkB,CAAC;AA6D3C,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,yBAAyB,IACrE,aAAa,CACZ,cAAc,EACd,OAAO,kBAAkB,EACzB,OAAO,2BAA2B,EAClC,OAAO,0BAA0B,EACjC,CAAC,EACD,OAAO,eAAe,CACtB,CAAC;AAEH,MAAM,MAAM,0BAA0B,GACrC,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;AAEnD,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,yBAAyB,IACzE,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAE3B,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,yBAAyB,EACrE,eAAe,GAAE,yBAAyB,GACzC,CAAuC,GACtC,0BAA0B,CAAC,CAAC,CAAC,CAoG/B;AAMD,YAAY,EACX,8BAA8B,EAC9B,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AAMpE,YAAY,EACX,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{request as ee}from"corsair/http";var f=class extends Error{constructor(o,a){super(o);this.code=a;this.name="GoogleSheetsAPIError"}},te="https://sheets.googleapis.com/v4";async function se(s,e,o){let a=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:s,client_secret:e,refresh_token:o,grant_type:"refresh_token"})});if(!a.ok){let r=await a.text();throw new f(`Failed to refresh access token: ${r}`,a.status)}return await a.json()}async function b({accessToken:s,expiresAt:e,clientId:o,clientSecret:a,refreshToken:n,forceRefresh:r=!1}){let p=Math.floor(Date.now()/1e3);if(!r&&s&&e&&Number(e)>p+300)return{accessToken:s,expiresAt:Number(e),refreshed:!1};let d=await se(o,a,n);return{accessToken:d.access_token,expiresAt:p+d.expires_in,refreshed:!0}}async function U(s,e,o={}){let{method:a="GET",body:n,query:r}=o;return await ee({BASE:te,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:e,HEADERS:{"Content-Type":"application/json"}},{method:a,url:s,body:a==="POST"||a==="PUT"||a==="PATCH"?n:void 0,mediaType:"application/json",query:r})}function oe(s){return s instanceof Error&&"status"in s&&s.status===401}var ae="https://www.googleapis.com/drive/v3";async function A(s,e,o={}){return fetch(`${ae}${s}`,{...o,headers:{...o.headers,Authorization:`Bearer ${e}`}})}async function k(s,e,o={}){let a=await A(s,e.key,o);if(a.status===401&&e._refreshAuth){let n=await e._refreshAuth();return A(s,n,o)}return a}async function g(s,e,o={}){try{return await U(s,e.key,o)}catch(a){if(oe(a)&&e._refreshAuth){let n=await e._refreshAuth();return await U(s,n,o)}throw a}}import{logEventFromContext as w}from"corsair/core";var C=async(s,e)=>{let o=e.range||`${e.sheetName||"Sheet1"}!A:Z`,a=e.values?[e.values]:[],n=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}:append`,s,{method:"POST",query:{valueInputOption:e.valueInputOption||"USER_ENTERED",insertDataOption:e.insertDataOption||"INSERT_ROWS"},body:{values:a,majorDimension:"ROWS"}});if(n.responses&&n.responses.length>0&&s.db.rows)try{let r=n.responses[0];if(r){let p=r.updatedRange||o,h=e.sheetName||"Sheet1",d=`${e.spreadsheetId}_${h}_${p}`;await s.db.rows.upsertByEntityId(d,{rowId:d,spreadsheetId:e.spreadsheetId,sheetName:h,range:p,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to save row to database:",r)}return await w(s,"googlesheets.sheets.appendRow",{...e},"completed"),n},_=async(s,e)=>{let o=e.sheetName||"Sheet1",a=e.keyColumn||"A",n=e.keyValue;if(!n)throw new Error("keyValue is required for appendOrUpdateRow");let r=`${o}!${a}:${a}`,p=await g(`/spreadsheets/${e.spreadsheetId}/values/${r}`,s,{method:"GET"}),h=-1;if(p.values){for(let m=0;m<p.values.length;m++)if(p.values[m]?.[0]===String(n)){h=m;break}}let d=e.values?[e.values]:[],c=h>=0?`${o}!${h+1}:${h+1}`:`${o}!A:Z`;if(h>=0){let m=await g(`/spreadsheets/${e.spreadsheetId}/values/${c}`,s,{method:"PUT",query:{valueInputOption:e.valueInputOption||"USER_ENTERED"},body:{values:d,majorDimension:"ROWS"}});if(s.db.rows)try{let y=m.updatedRange||c,E=`${e.spreadsheetId}_${o}_${y}`;await s.db.rows.upsertByEntityId(E,{rowId:E,spreadsheetId:e.spreadsheetId,sheetName:o,range:y,values:e.values,createdAt:new Date})}catch(y){console.warn("Failed to update row in database:",y)}return await w(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"update"},"completed"),m}else{let m=await g(`/spreadsheets/${e.spreadsheetId}/values/${c}:append`,s,{method:"POST",query:{valueInputOption:e.valueInputOption||"USER_ENTERED",insertDataOption:e.insertDataOption||"INSERT_ROWS"},body:{values:d,majorDimension:"ROWS"}});if(s.db.rows)try{let y=m.updates?.updatedRange||c,E=`${e.spreadsheetId}_${o}_${y}`;await s.db.rows.upsertByEntityId(E,{rowId:E,spreadsheetId:e.spreadsheetId,sheetName:o,range:y,values:e.values,createdAt:new Date})}catch(y){console.warn("Failed to save row to database:",y)}return await w(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"append"},"completed"),m}},D=async(s,e)=>{let o=e.range||`${e.sheetName||"Sheet1"}!A:Z`,a=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}`,s,{method:"GET",query:{valueRenderOption:e.valueRenderOption||"FORMATTED_VALUE",dateTimeRenderOption:e.dateTimeRenderOption||"FORMATTED_STRING"}});if(a.values&&s.db.rows)try{let n=e.sheetName||"Sheet1";for(let r=0;r<a.values.length;r++){let p=a.values[r];if(p){let h=r+1,d=`${n}!${h}:${h}`,c=`${e.spreadsheetId}_${n}_${d}`;await s.db.rows.upsertByEntityId(c,{rowId:c,spreadsheetId:e.spreadsheetId,sheetName:n,range:d,values:p,createdAt:new Date})}}}catch(n){console.warn("Failed to save rows to database:",n)}return await w(s,"googlesheets.sheets.getRows",{...e},"completed"),a},P=async(s,e)=>{let o=e.range||`${e.sheetName||"Sheet1"}!${e.rowIndex||1}:${e.rowIndex||1}`,a=e.values?[e.values]:[],n=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}`,s,{method:"PUT",query:{valueInputOption:e.valueInputOption||"USER_ENTERED"},body:{values:a,majorDimension:"ROWS"}});if(n.responses&&n.responses.length>0&&s.db.rows)try{let r=n.responses[0];if(r){let p=r.updatedRange||o,h=e.sheetName||"Sheet1",d=`${e.spreadsheetId}_${h}_${p}`;await s.db.rows.upsertByEntityId(d,{rowId:d,spreadsheetId:e.spreadsheetId,sheetName:h,range:p,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to update row in database:",r)}return await w(s,"googlesheets.sheets.updateRow",{...e},"completed"),n},N=async(s,e)=>{let o=e.range||e.sheetName||"Sheet1",a=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}:clear`,s,{method:"POST"});if(a.clearedRange&&s.db.rows)try{let n=e.sheetName||"Sheet1",r=a.clearedRange,p=`${e.spreadsheetId}_${n}_${r}`;await s.db.rows.deleteByEntityId(p)}catch(n){console.warn("Failed to delete rows from database:",n)}return await w(s,"googlesheets.sheets.clearSheet",{...e},"completed"),a},$=async(s,e)=>{let o=await g(`/spreadsheets/${e.spreadsheetId}:batchUpdate`,s,{method:"POST",body:{requests:[{addSheet:{properties:{title:e.title||"Sheet1"}}}]}});if(o.replies&&o.replies.length>0&&s.db.sheets)try{let n=o.replies[0].addSheet?.properties;n?.sheetId!==void 0&&await s.db.sheets.upsertByEntityId(String(n.sheetId),{sheetId:String(n.sheetId),spreadsheetId:e.spreadsheetId,title:n.title||e.title||"Sheet1",index:n.index,createdAt:new Date})}catch(a){console.warn("Failed to save sheet to database:",a)}return await w(s,"googlesheets.sheets.createSheet",{...e},"completed"),o},x=async(s,e)=>{let o=await g(`/spreadsheets/${e.spreadsheetId}:batchUpdate`,s,{method:"POST",body:{requests:[{deleteSheet:{sheetId:e.sheetId}}]}});if(s.db.sheets)try{await s.db.sheets.deleteByEntityId(String(e.sheetId))}catch(a){console.warn("Failed to delete sheet from database:",a)}return await w(s,"googlesheets.sheets.deleteSheet",{...e},"completed"),o},L=async(s,e)=>{let o=await g(`/spreadsheets/${e.spreadsheetId}`,s,{method:"GET",query:{fields:"spreadsheetId,sheets.properties"}}),a={spreadsheetId:o.spreadsheetId,sheets:o.sheets?.map(n=>n.properties).filter(n=>n!=null)};return await w(s,"googlesheets.sheets.listSheets",{...e},"completed"),a},W=async(s,e)=>{let o=e.dimension||"ROWS",a=e.startIndex||0,n=e.endIndex||a+1,r=await g(`/spreadsheets/${e.spreadsheetId}:batchUpdate`,s,{method:"POST",body:{requests:[{deleteDimension:{range:{sheetId:e.sheetId,dimension:o,startIndex:a,endIndex:n}}}]}});if(o==="ROWS"&&s.db.rows)try{let p=`Sheet_${e.sheetId}`;for(let h=a;h<n;h++){let d=h+1,c=`${p}!${d}:${d}`,m=`${e.spreadsheetId}_${p}_${c}`;await s.db.rows.deleteByEntityId(m)}}catch(p){console.warn("Failed to delete rows from database:",p)}return await w(s,"googlesheets.sheets.deleteRowsOrColumns",{...e},"completed"),r};import{logEventFromContext as G}from"corsair/core";var B=async(s,e)=>{let o=await g("/spreadsheets",s,{method:"POST",body:{properties:e.properties}});if(o.spreadsheetId&&s.db.spreadsheets)try{await s.db.spreadsheets.upsertByEntityId(o.spreadsheetId,{spreadsheetId:o.spreadsheetId,title:o.properties?.title,spreadsheetUrl:o.spreadsheetUrl,createdAt:new Date})}catch(a){console.warn("Failed to save spreadsheet to database:",a)}return await G(s,"googlesheets.spreadsheets.create",{...e},"completed"),o},V=async(s,e)=>{let o=await k(`/files/${e.spreadsheetId}`,s,{method:"DELETE"});if(!o.ok&&o.status!==404){let a=await o.text();throw new Error(`Failed to delete spreadsheet: ${o.status} ${a}`)}if(s.db.spreadsheets)try{await s.db.spreadsheets.deleteByEntityId(e.spreadsheetId)}catch(a){console.warn("Failed to delete spreadsheet from database:",a)}await G(s,"googlesheets.spreadsheets.delete",{...e},"completed")},j=async(s,e)=>{let o="mimeType='application/vnd.google-apps.spreadsheet'",a=new URLSearchParams({q:e.query?`${o} AND ${e.query}`:o,fields:"files(id,name,createdTime,modifiedTime,webViewLink),nextPageToken"});e.pageSize&&a.set("pageSize",String(e.pageSize)),e.pageToken&&a.set("pageToken",e.pageToken);let n=await k(`/files?${a.toString()}`,s);if(!n.ok){let p=await n.text();throw new Error(`Failed to list spreadsheets: ${n.status} ${p}`)}let r=await n.json();return await G(s,"googlesheets.spreadsheets.list",{...e},"completed"),r};import{z as t}from"zod";var pe=t.object({properties:t.object({title:t.string().optional(),locale:t.string().optional(),timeZone:t.string().optional()}).optional()}),he=t.object({spreadsheetId:t.string()}),de=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional(),values:t.array(t.union([t.string(),t.number(),t.boolean(),t.null()])).optional(),valueInputOption:t.enum(["RAW","USER_ENTERED"]).optional(),insertDataOption:t.enum(["OVERWRITE","INSERT_ROWS"]).optional()}),ie=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),keyColumn:t.string().describe('Column letter (e.g. "A"), not a header name (e.g. "Company Name")').optional(),keyValue:t.union([t.string(),t.number()]).optional(),values:t.array(t.union([t.string(),t.number(),t.boolean(),t.null()])).optional(),valueInputOption:t.enum(["RAW","USER_ENTERED"]).optional(),insertDataOption:t.enum(["OVERWRITE","INSERT_ROWS"]).optional()}),le=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional(),valueRenderOption:t.enum(["FORMATTED_VALUE","UNFORMATTED_VALUE","FORMULA"]).optional(),dateTimeRenderOption:t.enum(["SERIAL_NUMBER","FORMATTED_STRING"]).optional()}),ge=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional(),rowIndex:t.number().optional(),values:t.array(t.union([t.string(),t.number(),t.boolean(),t.null()])).optional(),valueInputOption:t.enum(["RAW","USER_ENTERED"]).optional()}),ce=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional()}),ue=t.object({spreadsheetId:t.string(),title:t.string().optional()}),Se=t.object({spreadsheetId:t.string(),sheetId:t.number()}),me=t.object({spreadsheetId:t.string(),sheetId:t.number(),dimension:t.enum(["ROWS","COLUMNS"]).optional(),startIndex:t.number().optional(),endIndex:t.number().optional()}),we=t.object({spreadsheetId:t.string()}),Re=t.object({pageSize:t.number().optional(),pageToken:t.string().optional(),query:t.string().optional()}),u={spreadsheetsCreate:pe,spreadsheetsDelete:he,spreadsheetsList:Re,sheetsAppendRow:de,sheetsAppendOrUpdateRow:ie,sheetsGetRows:le,sheetsUpdateRow:ge,sheetsClearSheet:ce,sheetsCreateSheet:ue,sheetsDeleteSheet:Se,sheetsDeleteRowsOrColumns:me,sheetsListSheetsInSpreadsheet:we},ye=t.object({title:t.string().optional(),locale:t.string().optional(),autoRecalc:t.enum(["ON_CHANGE","ON_UPDATE","HOUR","MINUTE"]).optional(),timeZone:t.string().optional()}),q=t.object({spreadsheetId:t.string().optional(),properties:ye.optional(),spreadsheetUrl:t.string().optional()}),F=t.object({range:t.string().optional(),majorDimension:t.enum(["ROWS","COLUMNS","DIMENSION_UNSPECIFIED"]).optional(),values:t.array(t.array(t.union([t.string(),t.number(),t.boolean(),t.null()]))).optional()}),O=t.object({spreadsheetId:t.string().optional(),totalUpdatedRows:t.number().optional(),totalUpdatedColumns:t.number().optional(),totalUpdatedCells:t.number().optional(),totalUpdatedSheets:t.number().optional(),responses:t.array(F).optional()}),Ee=t.object({spreadsheetId:t.string().optional(),clearedRange:t.string().optional()}),M=t.object({sheetId:t.number().optional(),title:t.string().optional(),index:t.number().optional(),sheetType:t.enum(["GRID","OBJECT","DATA_SOURCE"]).optional(),hidden:t.boolean().optional()}),We=t.object({properties:M.optional()}),T=t.object({spreadsheetId:t.string().optional(),replies:t.array(t.any()).optional(),updatedSpreadsheet:q.optional()}),Ie=t.object({spreadsheetId:t.string().optional(),sheets:t.array(M).optional()}),fe=t.object({id:t.string().optional(),name:t.string().optional(),createdTime:t.string().optional(),modifiedTime:t.string().optional(),webViewLink:t.string().optional()}),be=t.object({files:t.array(fe).optional(),nextPageToken:t.string().optional()}),S={spreadsheetsCreate:q,spreadsheetsDelete:t.void(),spreadsheetsList:be,sheetsAppendRow:O,sheetsAppendOrUpdateRow:O,sheetsGetRows:F,sheetsUpdateRow:O,sheetsClearSheet:Ee,sheetsCreateSheet:T,sheetsDeleteSheet:T,sheetsDeleteRowsOrColumns:T,sheetsListSheetsInSpreadsheet:Ie};var I={create:B,delete:V,list:j},R={appendRow:C,appendOrUpdateRow:_,getRows:D,updateRow:P,clearSheet:N,createSheet:$,deleteSheet:x,deleteRowsOrColumns:W,listSheetsInSpreadsheet:L};import{z as l}from"zod";var z=l.object({spreadsheetId:l.string(),title:l.string().optional(),spreadsheetUrl:l.string().optional(),createdAt:l.coerce.date().optional()}),K=l.object({sheetId:l.string(),spreadsheetId:l.string(),title:l.string().optional(),index:l.number().optional(),createdAt:l.coerce.date().optional()}),H=l.object({rowId:l.string(),spreadsheetId:l.string(),sheetName:l.string().optional(),range:l.string().optional(),values:l.array(l.union([l.string(),l.number(),l.boolean(),l.null()])).optional(),createdAt:l.coerce.date().optional()});var Z={version:"1.0.0",entities:{spreadsheets:z,sheets:K,rows:H}};import{logEventFromContext as Ge}from"corsair/core";import{z as i}from"zod";var J=i.object({spreadsheetId:i.string().optional(),sheetName:i.string().optional(),range:i.string().optional(),values:i.array(i.union([i.string(),i.number(),i.boolean(),i.null()])).optional(),eventType:i.literal("rangeUpdated").optional(),timestamp:i.string().optional(),event:i.unknown().optional()}),Q=i.object({eventType:i.literal("rangeUpdated"),spreadsheetId:i.string(),sheetName:i.string(),range:i.string(),values:i.array(i.union([i.string(),i.number(),i.boolean(),i.null()])),timestamp:i.string()});function ke(s){return typeof s=="string"?JSON.parse(s):s}function v(s){return e=>ke(e.body).eventType===s}var X={match:v("rangeUpdated"),handler:async(s,e)=>{let o=e.payload;if(!o.spreadsheetId||!o.values)return{success:!1,error:"Missing required fields: spreadsheetId or values"};let a={eventType:"rangeUpdated",spreadsheetId:o.spreadsheetId,sheetName:o.sheetName||"Sheet1",range:o.range||"A:Z",values:o.values,timestamp:o.timestamp||new Date().toISOString()};if(s.db.rows)try{let n=`${o.spreadsheetId}_${o.sheetName}_${o.range||"A:Z"}`;await s.db.rows.upsertByEntityId(n,{rowId:n,spreadsheetId:o.spreadsheetId,sheetName:o.sheetName||"Sheet1",range:o.range||"A:Z",values:o.values,createdAt:new Date})}catch(n){console.warn("Failed to save/update range in database:",n)}return await Ge(s,"googlesheets.webhook.rangeUpdated",{...a},"completed"),{success:!0,data:a}}};var Y={rangeUpdated:X};var Oe={spreadsheets:{create:I.create,delete:I.delete,list:I.list},sheets:{appendRow:R.appendRow,appendOrUpdateRow:R.appendOrUpdateRow,getRows:R.getRows,updateRow:R.updateRow,clearSheet:R.clearSheet,createSheet:R.createSheet,deleteSheet:R.deleteSheet,deleteRowsOrColumns:R.deleteRowsOrColumns,listSheetsInSpreadsheet:R.listSheetsInSpreadsheet}},Te={"spreadsheets.create":{input:u.spreadsheetsCreate,output:S.spreadsheetsCreate},"spreadsheets.delete":{input:u.spreadsheetsDelete,output:S.spreadsheetsDelete},"spreadsheets.list":{input:u.spreadsheetsList,output:S.spreadsheetsList},"sheets.appendRow":{input:u.sheetsAppendRow,output:S.sheetsAppendRow},"sheets.appendOrUpdateRow":{input:u.sheetsAppendOrUpdateRow,output:S.sheetsAppendOrUpdateRow},"sheets.getRows":{input:u.sheetsGetRows,output:S.sheetsGetRows},"sheets.updateRow":{input:u.sheetsUpdateRow,output:S.sheetsUpdateRow},"sheets.clearSheet":{input:u.sheetsClearSheet,output:S.sheetsClearSheet},"sheets.createSheet":{input:u.sheetsCreateSheet,output:S.sheetsCreateSheet},"sheets.deleteSheet":{input:u.sheetsDeleteSheet,output:S.sheetsDeleteSheet},"sheets.deleteRowsOrColumns":{input:u.sheetsDeleteRowsOrColumns,output:S.sheetsDeleteRowsOrColumns},"sheets.listSheetsInSpreadsheet":{input:u.sheetsListSheetsInSpreadsheet,output:S.sheetsListSheetsInSpreadsheet}},ve={rangeUpdated:Y.rangeUpdated},Ue={rangeUpdated:{description:"A range of cells in a Google Sheet was updated",payload:J,response:Q}},Ae="oauth_2",Ce={"spreadsheets.create":{riskLevel:"write",description:"Create a new spreadsheet"},"spreadsheets.delete":{riskLevel:"destructive",irreversible:!0,description:"Permanently delete a spreadsheet [DESTRUCTIVE \xB7 IRREVERSIBLE]"},"spreadsheets.list":{riskLevel:"read",description:"List all spreadsheets in Google Drive"},"sheets.appendRow":{riskLevel:"write",description:"Append a new row to a sheet"},"sheets.appendOrUpdateRow":{riskLevel:"write",description:"Append a new row or update an existing one"},"sheets.getRows":{riskLevel:"read",description:"Read rows from a sheet"},"sheets.updateRow":{riskLevel:"write",description:"Update an existing row in a sheet"},"sheets.clearSheet":{riskLevel:"destructive",description:"Clear all data from a sheet [DESTRUCTIVE]"},"sheets.createSheet":{riskLevel:"write",description:"Add a new sheet tab to a spreadsheet"},"sheets.deleteSheet":{riskLevel:"destructive",irreversible:!0,description:"Delete a sheet tab and all its data [DESTRUCTIVE \xB7 IRREVERSIBLE]"},"sheets.deleteRowsOrColumns":{riskLevel:"destructive",description:"Delete rows or columns from a sheet [DESTRUCTIVE]"},"sheets.listSheetsInSpreadsheet":{riskLevel:"read",description:"List all sheet tabs in a spreadsheet"}};function pt(s={}){let e={...s,authType:s.authType??Ae};return{id:"googlesheets",schema:Z,options:e,oauthConfig:{providerName:"Google",authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/drive.readonly"],authParams:{access_type:"offline",prompt:"consent"}},hooks:e.hooks,webhookHooks:e.webhookHooks,endpoints:Oe,webhooks:ve,endpointMeta:Ce,endpointSchemas:Te,webhookSchemas:Ue,keyBuilder:async o=>{let a=o.authType;if(e.key)return e.key;if(o.authType==="oauth_2"){let[n,r,p]=await Promise.all([o.keys.get_access_token(),o.keys.get_expires_at(),o.keys.get_refresh_token()]);if(!p)throw new Error("[auth-missing:googlesheets:refresh_token]: Google Sheets refresh token is missing");let h=await o.keys.get_integration_credentials();if(!h.client_id||!h.client_secret)throw new Error("[corsair:googlesheets] No client id or client secret");try{let d=await b({accessToken:n,expiresAt:r,refreshToken:p,clientId:h.client_id,clientSecret:h.client_secret});return d.refreshed&&await Promise.all([o.keys.set_access_token(d.accessToken),o.keys.set_expires_at(String(d.expiresAt))]),o._refreshAuth=async()=>{let c=await b({accessToken:null,expiresAt:null,refreshToken:p,clientId:h.client_id,clientSecret:h.client_secret,forceRefresh:!0});return await o.keys.set_access_token(c.accessToken),await o.keys.set_expires_at(String(c.expiresAt)),c.accessToken},d.accessToken}catch(d){throw new Error(`[corsair:googlesheets] Failed to get valid access token: ${d instanceof Error?d.message:String(d)}`)}}throw new Error(`[auth-missing:googlesheets:${a}]: Google Sheets key is missing`)},pluginWebhookMatcher:o=>{let a=o.body;if(!a)return!1;let n=typeof a?.spreadsheetId=="string",r=a?.eventType==="rangeUpdated";return n||r}}}export{v as createGoogleSheetsWebhookMatcher,pt as googlesheets,Te as googlesheetsEndpointSchemas};
1
+ import{AuthMissingError as ee}from"corsair/core";import{request as te}from"corsair/http";var f=class extends Error{constructor(o,a){super(o);this.code=a;this.name="GoogleSheetsAPIError"}},se="https://sheets.googleapis.com/v4";async function oe(s,e,o){let a=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:s,client_secret:e,refresh_token:o,grant_type:"refresh_token"})});if(!a.ok){let r=await a.text();throw new f(`Failed to refresh access token: ${r}`,a.status)}return await a.json()}async function b({accessToken:s,expiresAt:e,clientId:o,clientSecret:a,refreshToken:n,forceRefresh:r=!1}){let p=Math.floor(Date.now()/1e3);if(!r&&s&&e&&Number(e)>p+300)return{accessToken:s,expiresAt:Number(e),refreshed:!1};let d=await oe(o,a,n);return{accessToken:d.access_token,expiresAt:p+d.expires_in,refreshed:!0}}async function U(s,e,o={}){let{method:a="GET",body:n,query:r}=o;return await te({BASE:se,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:e,HEADERS:{"Content-Type":"application/json"}},{method:a,url:s,body:a==="POST"||a==="PUT"||a==="PATCH"?n:void 0,mediaType:"application/json",query:r})}function ae(s){return s instanceof Error&&"status"in s&&s.status===401}var ne="https://www.googleapis.com/drive/v3";async function A(s,e,o={}){return fetch(`${ne}${s}`,{...o,headers:{...o.headers,Authorization:`Bearer ${e}`}})}async function k(s,e,o={}){let a=await A(s,e.key,o);if(a.status===401&&e._refreshAuth){let n=await e._refreshAuth();return A(s,n,o)}return a}async function g(s,e,o={}){try{return await U(s,e.key,o)}catch(a){if(ae(a)&&e._refreshAuth){let n=await e._refreshAuth();return await U(s,n,o)}throw a}}import{logEventFromContext as w}from"corsair/core";var C=async(s,e)=>{let o=e.range||`${e.sheetName||"Sheet1"}!A:Z`,a=e.values?[e.values]:[],n=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}:append`,s,{method:"POST",query:{valueInputOption:e.valueInputOption||"USER_ENTERED",insertDataOption:e.insertDataOption||"INSERT_ROWS"},body:{values:a,majorDimension:"ROWS"}});if(n.responses&&n.responses.length>0&&s.db.rows)try{let r=n.responses[0];if(r){let p=r.updatedRange||o,h=e.sheetName||"Sheet1",d=`${e.spreadsheetId}_${h}_${p}`;await s.db.rows.upsertByEntityId(d,{rowId:d,spreadsheetId:e.spreadsheetId,sheetName:h,range:p,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to save row to database:",r)}return await w(s,"googlesheets.sheets.appendRow",{...e},"completed"),n},_=async(s,e)=>{let o=e.sheetName||"Sheet1",a=e.keyColumn||"A",n=e.keyValue;if(!n)throw new Error("keyValue is required for appendOrUpdateRow");let r=`${o}!${a}:${a}`,p=await g(`/spreadsheets/${e.spreadsheetId}/values/${r}`,s,{method:"GET"}),h=-1;if(p.values){for(let m=0;m<p.values.length;m++)if(p.values[m]?.[0]===String(n)){h=m;break}}let d=e.values?[e.values]:[],c=h>=0?`${o}!${h+1}:${h+1}`:`${o}!A:Z`;if(h>=0){let m=await g(`/spreadsheets/${e.spreadsheetId}/values/${c}`,s,{method:"PUT",query:{valueInputOption:e.valueInputOption||"USER_ENTERED"},body:{values:d,majorDimension:"ROWS"}});if(s.db.rows)try{let y=m.updatedRange||c,E=`${e.spreadsheetId}_${o}_${y}`;await s.db.rows.upsertByEntityId(E,{rowId:E,spreadsheetId:e.spreadsheetId,sheetName:o,range:y,values:e.values,createdAt:new Date})}catch(y){console.warn("Failed to update row in database:",y)}return await w(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"update"},"completed"),m}else{let m=await g(`/spreadsheets/${e.spreadsheetId}/values/${c}:append`,s,{method:"POST",query:{valueInputOption:e.valueInputOption||"USER_ENTERED",insertDataOption:e.insertDataOption||"INSERT_ROWS"},body:{values:d,majorDimension:"ROWS"}});if(s.db.rows)try{let y=m.updates?.updatedRange||c,E=`${e.spreadsheetId}_${o}_${y}`;await s.db.rows.upsertByEntityId(E,{rowId:E,spreadsheetId:e.spreadsheetId,sheetName:o,range:y,values:e.values,createdAt:new Date})}catch(y){console.warn("Failed to save row to database:",y)}return await w(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"append"},"completed"),m}},D=async(s,e)=>{let o=e.range||`${e.sheetName||"Sheet1"}!A:Z`,a=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}`,s,{method:"GET",query:{valueRenderOption:e.valueRenderOption||"FORMATTED_VALUE",dateTimeRenderOption:e.dateTimeRenderOption||"FORMATTED_STRING"}});if(a.values&&s.db.rows)try{let n=e.sheetName||"Sheet1";for(let r=0;r<a.values.length;r++){let p=a.values[r];if(p){let h=r+1,d=`${n}!${h}:${h}`,c=`${e.spreadsheetId}_${n}_${d}`;await s.db.rows.upsertByEntityId(c,{rowId:c,spreadsheetId:e.spreadsheetId,sheetName:n,range:d,values:p,createdAt:new Date})}}}catch(n){console.warn("Failed to save rows to database:",n)}return await w(s,"googlesheets.sheets.getRows",{...e},"completed"),a},P=async(s,e)=>{let o=e.range||`${e.sheetName||"Sheet1"}!${e.rowIndex||1}:${e.rowIndex||1}`,a=e.values?[e.values]:[],n=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}`,s,{method:"PUT",query:{valueInputOption:e.valueInputOption||"USER_ENTERED"},body:{values:a,majorDimension:"ROWS"}});if(n.responses&&n.responses.length>0&&s.db.rows)try{let r=n.responses[0];if(r){let p=r.updatedRange||o,h=e.sheetName||"Sheet1",d=`${e.spreadsheetId}_${h}_${p}`;await s.db.rows.upsertByEntityId(d,{rowId:d,spreadsheetId:e.spreadsheetId,sheetName:h,range:p,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to update row in database:",r)}return await w(s,"googlesheets.sheets.updateRow",{...e},"completed"),n},N=async(s,e)=>{let o=e.range||e.sheetName||"Sheet1",a=await g(`/spreadsheets/${e.spreadsheetId}/values/${o}:clear`,s,{method:"POST"});if(a.clearedRange&&s.db.rows)try{let n=e.sheetName||"Sheet1",r=a.clearedRange,p=`${e.spreadsheetId}_${n}_${r}`;await s.db.rows.deleteByEntityId(p)}catch(n){console.warn("Failed to delete rows from database:",n)}return await w(s,"googlesheets.sheets.clearSheet",{...e},"completed"),a},$=async(s,e)=>{let o=await g(`/spreadsheets/${e.spreadsheetId}:batchUpdate`,s,{method:"POST",body:{requests:[{addSheet:{properties:{title:e.title||"Sheet1"}}}]}});if(o.replies&&o.replies.length>0&&s.db.sheets)try{let n=o.replies[0].addSheet?.properties;n?.sheetId!==void 0&&await s.db.sheets.upsertByEntityId(String(n.sheetId),{sheetId:String(n.sheetId),spreadsheetId:e.spreadsheetId,title:n.title||e.title||"Sheet1",index:n.index,createdAt:new Date})}catch(a){console.warn("Failed to save sheet to database:",a)}return await w(s,"googlesheets.sheets.createSheet",{...e},"completed"),o},x=async(s,e)=>{let o=await g(`/spreadsheets/${e.spreadsheetId}:batchUpdate`,s,{method:"POST",body:{requests:[{deleteSheet:{sheetId:e.sheetId}}]}});if(s.db.sheets)try{await s.db.sheets.deleteByEntityId(String(e.sheetId))}catch(a){console.warn("Failed to delete sheet from database:",a)}return await w(s,"googlesheets.sheets.deleteSheet",{...e},"completed"),o},L=async(s,e)=>{let o=await g(`/spreadsheets/${e.spreadsheetId}`,s,{method:"GET",query:{fields:"spreadsheetId,sheets.properties"}}),a={spreadsheetId:o.spreadsheetId,sheets:o.sheets?.map(n=>n.properties).filter(n=>n!=null)};return await w(s,"googlesheets.sheets.listSheets",{...e},"completed"),a},W=async(s,e)=>{let o=e.dimension||"ROWS",a=e.startIndex||0,n=e.endIndex||a+1,r=await g(`/spreadsheets/${e.spreadsheetId}:batchUpdate`,s,{method:"POST",body:{requests:[{deleteDimension:{range:{sheetId:e.sheetId,dimension:o,startIndex:a,endIndex:n}}}]}});if(o==="ROWS"&&s.db.rows)try{let p=`Sheet_${e.sheetId}`;for(let h=a;h<n;h++){let d=h+1,c=`${p}!${d}:${d}`,m=`${e.spreadsheetId}_${p}_${c}`;await s.db.rows.deleteByEntityId(m)}}catch(p){console.warn("Failed to delete rows from database:",p)}return await w(s,"googlesheets.sheets.deleteRowsOrColumns",{...e},"completed"),r};import{logEventFromContext as G}from"corsair/core";var B=async(s,e)=>{let o=await g("/spreadsheets",s,{method:"POST",body:{properties:e.properties}});if(o.spreadsheetId&&s.db.spreadsheets)try{await s.db.spreadsheets.upsertByEntityId(o.spreadsheetId,{spreadsheetId:o.spreadsheetId,title:o.properties?.title,spreadsheetUrl:o.spreadsheetUrl,createdAt:new Date})}catch(a){console.warn("Failed to save spreadsheet to database:",a)}return await G(s,"googlesheets.spreadsheets.create",{...e},"completed"),o},V=async(s,e)=>{let o=await k(`/files/${e.spreadsheetId}`,s,{method:"DELETE"});if(!o.ok&&o.status!==404){let a=await o.text();throw new Error(`Failed to delete spreadsheet: ${o.status} ${a}`)}if(s.db.spreadsheets)try{await s.db.spreadsheets.deleteByEntityId(e.spreadsheetId)}catch(a){console.warn("Failed to delete spreadsheet from database:",a)}await G(s,"googlesheets.spreadsheets.delete",{...e},"completed")},j=async(s,e)=>{let o="mimeType='application/vnd.google-apps.spreadsheet'",a=new URLSearchParams({q:e.query?`${o} AND ${e.query}`:o,fields:"files(id,name,createdTime,modifiedTime,webViewLink),nextPageToken"});e.pageSize&&a.set("pageSize",String(e.pageSize)),e.pageToken&&a.set("pageToken",e.pageToken);let n=await k(`/files?${a.toString()}`,s);if(!n.ok){let p=await n.text();throw new Error(`Failed to list spreadsheets: ${n.status} ${p}`)}let r=await n.json();return await G(s,"googlesheets.spreadsheets.list",{...e},"completed"),r};import{z as t}from"zod";var he=t.object({properties:t.object({title:t.string().optional(),locale:t.string().optional(),timeZone:t.string().optional()}).optional()}),de=t.object({spreadsheetId:t.string()}),ie=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional(),values:t.array(t.union([t.string(),t.number(),t.boolean(),t.null()])).optional(),valueInputOption:t.enum(["RAW","USER_ENTERED"]).optional(),insertDataOption:t.enum(["OVERWRITE","INSERT_ROWS"]).optional()}),le=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),keyColumn:t.string().describe('Column letter (e.g. "A"), not a header name (e.g. "Company Name")').optional(),keyValue:t.union([t.string(),t.number()]).optional(),values:t.array(t.union([t.string(),t.number(),t.boolean(),t.null()])).optional(),valueInputOption:t.enum(["RAW","USER_ENTERED"]).optional(),insertDataOption:t.enum(["OVERWRITE","INSERT_ROWS"]).optional()}),ge=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional(),valueRenderOption:t.enum(["FORMATTED_VALUE","UNFORMATTED_VALUE","FORMULA"]).optional(),dateTimeRenderOption:t.enum(["SERIAL_NUMBER","FORMATTED_STRING"]).optional()}),ce=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional(),rowIndex:t.number().optional(),values:t.array(t.union([t.string(),t.number(),t.boolean(),t.null()])).optional(),valueInputOption:t.enum(["RAW","USER_ENTERED"]).optional()}),ue=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional()}),Se=t.object({spreadsheetId:t.string(),title:t.string().optional()}),me=t.object({spreadsheetId:t.string(),sheetId:t.number()}),we=t.object({spreadsheetId:t.string(),sheetId:t.number(),dimension:t.enum(["ROWS","COLUMNS"]).optional(),startIndex:t.number().optional(),endIndex:t.number().optional()}),Re=t.object({spreadsheetId:t.string()}),ye=t.object({pageSize:t.number().optional(),pageToken:t.string().optional(),query:t.string().optional()}),u={spreadsheetsCreate:he,spreadsheetsDelete:de,spreadsheetsList:ye,sheetsAppendRow:ie,sheetsAppendOrUpdateRow:le,sheetsGetRows:ge,sheetsUpdateRow:ce,sheetsClearSheet:ue,sheetsCreateSheet:Se,sheetsDeleteSheet:me,sheetsDeleteRowsOrColumns:we,sheetsListSheetsInSpreadsheet:Re},Ee=t.object({title:t.string().optional(),locale:t.string().optional(),autoRecalc:t.enum(["ON_CHANGE","ON_UPDATE","HOUR","MINUTE"]).optional(),timeZone:t.string().optional()}),q=t.object({spreadsheetId:t.string().optional(),properties:Ee.optional(),spreadsheetUrl:t.string().optional()}),F=t.object({range:t.string().optional(),majorDimension:t.enum(["ROWS","COLUMNS","DIMENSION_UNSPECIFIED"]).optional(),values:t.array(t.array(t.union([t.string(),t.number(),t.boolean(),t.null()]))).optional()}),O=t.object({spreadsheetId:t.string().optional(),totalUpdatedRows:t.number().optional(),totalUpdatedColumns:t.number().optional(),totalUpdatedCells:t.number().optional(),totalUpdatedSheets:t.number().optional(),responses:t.array(F).optional()}),Ie=t.object({spreadsheetId:t.string().optional(),clearedRange:t.string().optional()}),M=t.object({sheetId:t.number().optional(),title:t.string().optional(),index:t.number().optional(),sheetType:t.enum(["GRID","OBJECT","DATA_SOURCE"]).optional(),hidden:t.boolean().optional()}),Be=t.object({properties:M.optional()}),T=t.object({spreadsheetId:t.string().optional(),replies:t.array(t.any()).optional(),updatedSpreadsheet:q.optional()}),fe=t.object({spreadsheetId:t.string().optional(),sheets:t.array(M).optional()}),be=t.object({id:t.string().optional(),name:t.string().optional(),createdTime:t.string().optional(),modifiedTime:t.string().optional(),webViewLink:t.string().optional()}),ke=t.object({files:t.array(be).optional(),nextPageToken:t.string().optional()}),S={spreadsheetsCreate:q,spreadsheetsDelete:t.void(),spreadsheetsList:ke,sheetsAppendRow:O,sheetsAppendOrUpdateRow:O,sheetsGetRows:F,sheetsUpdateRow:O,sheetsClearSheet:Ie,sheetsCreateSheet:T,sheetsDeleteSheet:T,sheetsDeleteRowsOrColumns:T,sheetsListSheetsInSpreadsheet:fe};var I={create:B,delete:V,list:j},R={appendRow:C,appendOrUpdateRow:_,getRows:D,updateRow:P,clearSheet:N,createSheet:$,deleteSheet:x,deleteRowsOrColumns:W,listSheetsInSpreadsheet:L};import{z as l}from"zod";var z=l.object({spreadsheetId:l.string(),title:l.string().optional(),spreadsheetUrl:l.string().optional(),createdAt:l.coerce.date().optional()}),K=l.object({sheetId:l.string(),spreadsheetId:l.string(),title:l.string().optional(),index:l.number().optional(),createdAt:l.coerce.date().optional()}),H=l.object({rowId:l.string(),spreadsheetId:l.string(),sheetName:l.string().optional(),range:l.string().optional(),values:l.array(l.union([l.string(),l.number(),l.boolean(),l.null()])).optional(),createdAt:l.coerce.date().optional()});var Z={version:"1.0.0",entities:{spreadsheets:z,sheets:K,rows:H}};import{logEventFromContext as Oe}from"corsair/core";import{z as i}from"zod";var J=i.object({spreadsheetId:i.string().optional(),sheetName:i.string().optional(),range:i.string().optional(),values:i.array(i.union([i.string(),i.number(),i.boolean(),i.null()])).optional(),eventType:i.literal("rangeUpdated").optional(),timestamp:i.string().optional(),event:i.unknown().optional()}),Q=i.object({eventType:i.literal("rangeUpdated"),spreadsheetId:i.string(),sheetName:i.string(),range:i.string(),values:i.array(i.union([i.string(),i.number(),i.boolean(),i.null()])),timestamp:i.string()});function Ge(s){return typeof s=="string"?JSON.parse(s):s}function v(s){return e=>Ge(e.body).eventType===s}var X={match:v("rangeUpdated"),handler:async(s,e)=>{let o=e.payload;if(!o.spreadsheetId||!o.values)return{success:!1,error:"Missing required fields: spreadsheetId or values"};let a={eventType:"rangeUpdated",spreadsheetId:o.spreadsheetId,sheetName:o.sheetName||"Sheet1",range:o.range||"A:Z",values:o.values,timestamp:o.timestamp||new Date().toISOString()};if(s.db.rows)try{let n=`${o.spreadsheetId}_${o.sheetName}_${o.range||"A:Z"}`;await s.db.rows.upsertByEntityId(n,{rowId:n,spreadsheetId:o.spreadsheetId,sheetName:o.sheetName||"Sheet1",range:o.range||"A:Z",values:o.values,createdAt:new Date})}catch(n){console.warn("Failed to save/update range in database:",n)}return await Oe(s,"googlesheets.webhook.rangeUpdated",{...a},"completed"),{success:!0,data:a}}};var Y={rangeUpdated:X};var Te={spreadsheets:{create:I.create,delete:I.delete,list:I.list},sheets:{appendRow:R.appendRow,appendOrUpdateRow:R.appendOrUpdateRow,getRows:R.getRows,updateRow:R.updateRow,clearSheet:R.clearSheet,createSheet:R.createSheet,deleteSheet:R.deleteSheet,deleteRowsOrColumns:R.deleteRowsOrColumns,listSheetsInSpreadsheet:R.listSheetsInSpreadsheet}},ve={"spreadsheets.create":{input:u.spreadsheetsCreate,output:S.spreadsheetsCreate},"spreadsheets.delete":{input:u.spreadsheetsDelete,output:S.spreadsheetsDelete},"spreadsheets.list":{input:u.spreadsheetsList,output:S.spreadsheetsList},"sheets.appendRow":{input:u.sheetsAppendRow,output:S.sheetsAppendRow},"sheets.appendOrUpdateRow":{input:u.sheetsAppendOrUpdateRow,output:S.sheetsAppendOrUpdateRow},"sheets.getRows":{input:u.sheetsGetRows,output:S.sheetsGetRows},"sheets.updateRow":{input:u.sheetsUpdateRow,output:S.sheetsUpdateRow},"sheets.clearSheet":{input:u.sheetsClearSheet,output:S.sheetsClearSheet},"sheets.createSheet":{input:u.sheetsCreateSheet,output:S.sheetsCreateSheet},"sheets.deleteSheet":{input:u.sheetsDeleteSheet,output:S.sheetsDeleteSheet},"sheets.deleteRowsOrColumns":{input:u.sheetsDeleteRowsOrColumns,output:S.sheetsDeleteRowsOrColumns},"sheets.listSheetsInSpreadsheet":{input:u.sheetsListSheetsInSpreadsheet,output:S.sheetsListSheetsInSpreadsheet}},Ue={rangeUpdated:Y.rangeUpdated},Ae={rangeUpdated:{description:"A range of cells in a Google Sheet was updated",payload:J,response:Q}},Ce="oauth_2",_e={"spreadsheets.create":{riskLevel:"write",description:"Create a new spreadsheet"},"spreadsheets.delete":{riskLevel:"destructive",irreversible:!0,description:"Permanently delete a spreadsheet [DESTRUCTIVE \xB7 IRREVERSIBLE]"},"spreadsheets.list":{riskLevel:"read",description:"List all spreadsheets in Google Drive"},"sheets.appendRow":{riskLevel:"write",description:"Append a new row to a sheet"},"sheets.appendOrUpdateRow":{riskLevel:"write",description:"Append a new row or update an existing one"},"sheets.getRows":{riskLevel:"read",description:"Read rows from a sheet"},"sheets.updateRow":{riskLevel:"write",description:"Update an existing row in a sheet"},"sheets.clearSheet":{riskLevel:"destructive",description:"Clear all data from a sheet [DESTRUCTIVE]"},"sheets.createSheet":{riskLevel:"write",description:"Add a new sheet tab to a spreadsheet"},"sheets.deleteSheet":{riskLevel:"destructive",irreversible:!0,description:"Delete a sheet tab and all its data [DESTRUCTIVE \xB7 IRREVERSIBLE]"},"sheets.deleteRowsOrColumns":{riskLevel:"destructive",description:"Delete rows or columns from a sheet [DESTRUCTIVE]"},"sheets.listSheetsInSpreadsheet":{riskLevel:"read",description:"List all sheet tabs in a spreadsheet"}};function dt(s={}){let e={...s,authType:s.authType??Ce};return{id:"googlesheets",schema:Z,options:e,oauthConfig:{providerName:"Google",authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/drive.readonly"],authParams:{access_type:"offline",prompt:"consent"}},hooks:e.hooks,webhookHooks:e.webhookHooks,endpoints:Te,webhooks:Ue,endpointMeta:_e,endpointSchemas:ve,webhookSchemas:Ae,keyBuilder:async o=>{let a=o.authType;if(e.key)return e.key;if(o.authType==="oauth_2"){let[n,r,p]=await Promise.all([o.keys.get_access_token(),o.keys.get_expires_at(),o.keys.get_refresh_token()]);if(!p)throw new ee("googlesheets","oauth_2");let h=await o.keys.get_integration_credentials();if(!h.client_id||!h.client_secret)throw new Error("[corsair:googlesheets] No client id or client secret");try{let d=await b({accessToken:n,expiresAt:r,refreshToken:p,clientId:h.client_id,clientSecret:h.client_secret});return d.refreshed&&await Promise.all([o.keys.set_access_token(d.accessToken),o.keys.set_expires_at(String(d.expiresAt))]),o._refreshAuth=async()=>{let c=await b({accessToken:null,expiresAt:null,refreshToken:p,clientId:h.client_id,clientSecret:h.client_secret,forceRefresh:!0});return await o.keys.set_access_token(c.accessToken),await o.keys.set_expires_at(String(c.expiresAt)),c.accessToken},d.accessToken}catch(d){throw new Error(`[corsair:googlesheets] Failed to get valid access token: ${d instanceof Error?d.message:String(d)}`)}}throw new ee("googlesheets","oauth_2")},pluginWebhookMatcher:o=>{let a=o.body;if(!a)return!1;let n=typeof a?.spreadsheetId=="string",r=a?.eventType==="rangeUpdated";return n||r}}}export{v as createGoogleSheetsWebhookMatcher,dt as googlesheets,ve as googlesheetsEndpointSchemas};
@@ -3,59 +3,23 @@ export declare const GoogleSheetsSpreadsheet: z.ZodObject<{
3
3
  spreadsheetId: z.ZodString;
4
4
  title: z.ZodOptional<z.ZodString>;
5
5
  spreadsheetUrl: z.ZodOptional<z.ZodString>;
6
- createdAt: z.ZodOptional<z.ZodDate>;
7
- }, "strip", z.ZodTypeAny, {
8
- spreadsheetId: string;
9
- title?: string | undefined;
10
- spreadsheetUrl?: string | undefined;
11
- createdAt?: Date | undefined;
12
- }, {
13
- spreadsheetId: string;
14
- title?: string | undefined;
15
- spreadsheetUrl?: string | undefined;
16
- createdAt?: Date | undefined;
17
- }>;
6
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
7
+ }, z.core.$strip>;
18
8
  export declare const GoogleSheetsSheet: z.ZodObject<{
19
9
  sheetId: z.ZodString;
20
10
  spreadsheetId: z.ZodString;
21
11
  title: z.ZodOptional<z.ZodString>;
22
12
  index: z.ZodOptional<z.ZodNumber>;
23
- createdAt: z.ZodOptional<z.ZodDate>;
24
- }, "strip", z.ZodTypeAny, {
25
- spreadsheetId: string;
26
- sheetId: string;
27
- title?: string | undefined;
28
- index?: number | undefined;
29
- createdAt?: Date | undefined;
30
- }, {
31
- spreadsheetId: string;
32
- sheetId: string;
33
- title?: string | undefined;
34
- index?: number | undefined;
35
- createdAt?: Date | undefined;
36
- }>;
13
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
14
+ }, z.core.$strip>;
37
15
  export declare const GoogleSheetsRow: z.ZodObject<{
38
16
  rowId: z.ZodString;
39
17
  spreadsheetId: z.ZodString;
40
18
  sheetName: z.ZodOptional<z.ZodString>;
41
19
  range: z.ZodOptional<z.ZodString>;
42
- values: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many">>;
43
- createdAt: z.ZodOptional<z.ZodDate>;
44
- }, "strip", z.ZodTypeAny, {
45
- spreadsheetId: string;
46
- rowId: string;
47
- range?: string | undefined;
48
- values?: (string | number | boolean | null)[] | undefined;
49
- sheetName?: string | undefined;
50
- createdAt?: Date | undefined;
51
- }, {
52
- spreadsheetId: string;
53
- rowId: string;
54
- range?: string | undefined;
55
- values?: (string | number | boolean | null)[] | undefined;
56
- sheetName?: string | undefined;
57
- createdAt?: Date | undefined;
58
- }>;
20
+ values: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
21
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
22
+ }, z.core.$strip>;
59
23
  export type GoogleSheetsSpreadsheet = z.infer<typeof GoogleSheetsSpreadsheet>;
60
24
  export type GoogleSheetsSheet = z.infer<typeof GoogleSheetsSheet>;
61
25
  export type GoogleSheetsRow = z.infer<typeof GoogleSheetsRow>;
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../schema/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAS1B,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../schema/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;iBAKlC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;iBAM5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;iBAS1B,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -5,59 +5,23 @@ export declare const GoogleSheetsSchema: {
5
5
  spreadsheetId: import("zod").ZodString;
6
6
  title: import("zod").ZodOptional<import("zod").ZodString>;
7
7
  spreadsheetUrl: import("zod").ZodOptional<import("zod").ZodString>;
8
- createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
9
- }, "strip", import("zod").ZodTypeAny, {
10
- spreadsheetId: string;
11
- title?: string | undefined;
12
- spreadsheetUrl?: string | undefined;
13
- createdAt?: Date | undefined;
14
- }, {
15
- spreadsheetId: string;
16
- title?: string | undefined;
17
- spreadsheetUrl?: string | undefined;
18
- createdAt?: Date | undefined;
19
- }>;
8
+ createdAt: import("zod").ZodOptional<import("zod").ZodCoercedDate<unknown>>;
9
+ }, import("zod/v4/core").$strip>;
20
10
  readonly sheets: import("zod").ZodObject<{
21
11
  sheetId: import("zod").ZodString;
22
12
  spreadsheetId: import("zod").ZodString;
23
13
  title: import("zod").ZodOptional<import("zod").ZodString>;
24
14
  index: import("zod").ZodOptional<import("zod").ZodNumber>;
25
- createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
26
- }, "strip", import("zod").ZodTypeAny, {
27
- spreadsheetId: string;
28
- sheetId: string;
29
- title?: string | undefined;
30
- index?: number | undefined;
31
- createdAt?: Date | undefined;
32
- }, {
33
- spreadsheetId: string;
34
- sheetId: string;
35
- title?: string | undefined;
36
- index?: number | undefined;
37
- createdAt?: Date | undefined;
38
- }>;
15
+ createdAt: import("zod").ZodOptional<import("zod").ZodCoercedDate<unknown>>;
16
+ }, import("zod/v4/core").$strip>;
39
17
  readonly rows: import("zod").ZodObject<{
40
18
  rowId: import("zod").ZodString;
41
19
  spreadsheetId: import("zod").ZodString;
42
20
  sheetName: import("zod").ZodOptional<import("zod").ZodString>;
43
21
  range: import("zod").ZodOptional<import("zod").ZodString>;
44
- values: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean, import("zod").ZodNull]>, "many">>;
45
- createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
46
- }, "strip", import("zod").ZodTypeAny, {
47
- spreadsheetId: string;
48
- rowId: string;
49
- range?: string | undefined;
50
- values?: (string | number | boolean | null)[] | undefined;
51
- sheetName?: string | undefined;
52
- createdAt?: Date | undefined;
53
- }, {
54
- spreadsheetId: string;
55
- rowId: string;
56
- range?: string | undefined;
57
- values?: (string | number | boolean | null)[] | undefined;
58
- sheetName?: string | undefined;
59
- createdAt?: Date | undefined;
60
- }>;
22
+ values: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean, import("zod").ZodNull]>>>;
23
+ createdAt: import("zod").ZodOptional<import("zod").ZodCoercedDate<unknown>>;
24
+ }, import("zod/v4/core").$strip>;
61
25
  };
62
26
  };
63
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOrB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;CAOrB,CAAC"}
@@ -2,18 +2,18 @@ export declare const RowWebhooks: {
2
2
  rangeUpdated: {
3
3
  match: import("corsair/core").CorsairWebhookMatcher;
4
4
  handler: import("corsair/core").CorsairWebhookHandler<import("..").GoogleSheetsContext, import("./types").GoogleSheetsWebhookPayload<{
5
- range: string;
6
- values: (string | number | boolean | null)[];
5
+ eventType: "rangeUpdated";
7
6
  spreadsheetId: string;
8
7
  sheetName: string;
9
- eventType: "rangeUpdated";
10
- timestamp: string;
11
- }>, {
12
8
  range: string;
13
9
  values: (string | number | boolean | null)[];
10
+ timestamp: string;
11
+ }>, {
12
+ eventType: "rangeUpdated";
14
13
  spreadsheetId: string;
15
14
  sheetName: string;
16
- eventType: "rangeUpdated";
15
+ range: string;
16
+ values: (string | number | boolean | null)[];
17
17
  timestamp: string;
18
18
  }>;
19
19
  };
@@ -4,27 +4,11 @@ export declare const GoogleAppsScriptWebhookPayloadSchema: z.ZodObject<{
4
4
  spreadsheetId: z.ZodOptional<z.ZodString>;
5
5
  sheetName: z.ZodOptional<z.ZodString>;
6
6
  range: z.ZodOptional<z.ZodString>;
7
- values: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many">>;
7
+ values: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
8
8
  eventType: z.ZodOptional<z.ZodLiteral<"rangeUpdated">>;
9
9
  timestamp: z.ZodOptional<z.ZodString>;
10
10
  event: z.ZodOptional<z.ZodUnknown>;
11
- }, "strip", z.ZodTypeAny, {
12
- range?: string | undefined;
13
- values?: (string | number | boolean | null)[] | undefined;
14
- spreadsheetId?: string | undefined;
15
- sheetName?: string | undefined;
16
- eventType?: "rangeUpdated" | undefined;
17
- timestamp?: string | undefined;
18
- event?: unknown;
19
- }, {
20
- range?: string | undefined;
21
- values?: (string | number | boolean | null)[] | undefined;
22
- spreadsheetId?: string | undefined;
23
- sheetName?: string | undefined;
24
- eventType?: "rangeUpdated" | undefined;
25
- timestamp?: string | undefined;
26
- event?: unknown;
27
- }>;
11
+ }, z.core.$strip>;
28
12
  export type GoogleAppsScriptWebhookPayload<TEvent = unknown> = Omit<z.infer<typeof GoogleAppsScriptWebhookPayloadSchema>, 'event'> & {
29
13
  event?: TEvent;
30
14
  };
@@ -33,23 +17,9 @@ export declare const RangeUpdatedEventSchema: z.ZodObject<{
33
17
  spreadsheetId: z.ZodString;
34
18
  sheetName: z.ZodString;
35
19
  range: z.ZodString;
36
- values: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many">;
20
+ values: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>;
37
21
  timestamp: z.ZodString;
38
- }, "strip", z.ZodTypeAny, {
39
- range: string;
40
- values: (string | number | boolean | null)[];
41
- spreadsheetId: string;
42
- sheetName: string;
43
- eventType: "rangeUpdated";
44
- timestamp: string;
45
- }, {
46
- range: string;
47
- values: (string | number | boolean | null)[];
48
- spreadsheetId: string;
49
- sheetName: string;
50
- eventType: "rangeUpdated";
51
- timestamp: string;
52
- }>;
22
+ }, z.core.$strip>;
53
23
  export type RangeUpdatedEvent = z.infer<typeof RangeUpdatedEventSchema>;
54
24
  export type GoogleSheetsWebhookEvent = RangeUpdatedEvent;
55
25
  export type GoogleSheetsEventName = 'rangeUpdated';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAqB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;EAU/C,CAAC;AACH,MAAM,MAAM,8BAA8B,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAClE,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,EACpD,OAAO,CACP,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,0BAA0B,CAAC,MAAM,GAAG,OAAO,IACtD,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,MAAM,0BAA0B,GAAG;IACxC,YAAY,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAUF,wBAAgB,gCAAgC,CAC/C,SAAS,EAAE,qBAAqB,GAC9B,qBAAqB,CAKvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAqB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,oCAAoC;;;;;;;;iBAU/C,CAAC;AACH,MAAM,MAAM,8BAA8B,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAClE,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,EACpD,OAAO,CACP,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB,eAAO,MAAM,uBAAuB;;;;;;;iBAOlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,0BAA0B,CAAC,MAAM,GAAG,OAAO,IACtD,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,MAAM,0BAA0B,GAAG;IACxC,YAAY,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAUF,wBAAgB,gCAAgC,CAC/C,SAAS,EAAE,qBAAqB,GAC9B,qBAAqB,CAKvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corsair-dev/googlesheets",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Google sheets plugin for Corsair",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,15 +19,15 @@
19
19
  },
20
20
  "peerDependencies": {
21
21
  "corsair": ">=0.1.0",
22
- "zod": "^3.0.0"
22
+ "zod": "^4.1.13"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/jest": "^29.5.14",
26
26
  "ts-jest": "^29.4.9",
27
27
  "tsup": "^8.0.1",
28
28
  "typescript": "^5.9.3",
29
- "zod": "^3.25.76",
30
- "corsair": "0.1.67"
29
+ "zod": "^4.1.13",
30
+ "corsair": "0.1.75"
31
31
  },
32
32
  "keywords": [
33
33
  "corsair",