@corsair-dev/googlesheets 0.1.8 → 0.1.9

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":"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"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{AuthMissingError as ke,getOAuthAccessToken as ve}from"corsair/core";import{logEventFromContext as m}from"corsair/core";import{request as Y}from"corsair/http";var ee="https://sheets.googleapis.com/v4";async function v(s,e,o={}){let{method:a="GET",body:n,query:r}=o;return await Y({BASE:ee,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 te(s){return s instanceof Error&&"status"in s&&s.status===401}var se="https://www.googleapis.com/drive/v3";async function T(s,e,o={}){return fetch(`${se}${s}`,{...o,headers:{...o.headers,Authorization:`Bearer ${e}`}})}async function b(s,e,o={}){let a=await T(s,e.key,o);if(a.status===401&&e._refreshAuth){let n=await e._refreshAuth();return T(s,n,o)}return a}async function g(s,e,o={}){try{return await v(s,e.key,o)}catch(a){if(te(a)&&e._refreshAuth){let n=await e._refreshAuth();return await v(s,n,o)}throw a}}var U=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 d=r.updatedRange||o,i=e.sheetName||"Sheet1",l=`${e.spreadsheetId}_${i}_${d}`;await s.db.rows.upsertByEntityId(l,{rowId:l,spreadsheetId:e.spreadsheetId,sheetName:i,range:d,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to save row to database:",r)}return await m(s,"googlesheets.sheets.appendRow",{...e},"completed"),n},A=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}`,d=await g(`/spreadsheets/${e.spreadsheetId}/values/${r}`,s,{method:"GET"}),i=-1;if(d.values){for(let c=0;c<d.values.length;c++)if(d.values[c]?.[0]===String(n)){i=c;break}}let l=e.values?[e.values]:[],R=i>=0?`${o}!${i+1}:${i+1}`:`${o}!A:Z`;if(i>=0){let c=await g(`/spreadsheets/${e.spreadsheetId}/values/${R}`,s,{method:"PUT",query:{valueInputOption:e.valueInputOption||"USER_ENTERED"},body:{values:l,majorDimension:"ROWS"}});if(s.db.rows)try{let y=c.updatedRange||R,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 m(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"update"},"completed"),c}else{let c=await g(`/spreadsheets/${e.spreadsheetId}/values/${R}:append`,s,{method:"POST",query:{valueInputOption:e.valueInputOption||"USER_ENTERED",insertDataOption:e.insertDataOption||"INSERT_ROWS"},body:{values:l,majorDimension:"ROWS"}});if(s.db.rows)try{let y=c.updates?.updatedRange||R,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 m(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"append"},"completed"),c}},C=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 d=a.values[r];if(d){let i=r+1,l=`${n}!${i}:${i}`,R=`${e.spreadsheetId}_${n}_${l}`;await s.db.rows.upsertByEntityId(R,{rowId:R,spreadsheetId:e.spreadsheetId,sheetName:n,range:l,values:d,createdAt:new Date})}}}catch(n){console.warn("Failed to save rows to database:",n)}return await m(s,"googlesheets.sheets.getRows",{...e},"completed"),a},D=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 d=r.updatedRange||o,i=e.sheetName||"Sheet1",l=`${e.spreadsheetId}_${i}_${d}`;await s.db.rows.upsertByEntityId(l,{rowId:l,spreadsheetId:e.spreadsheetId,sheetName:i,range:d,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to update row in database:",r)}return await m(s,"googlesheets.sheets.updateRow",{...e},"completed"),n},P=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,d=`${e.spreadsheetId}_${n}_${r}`;await s.db.rows.deleteByEntityId(d)}catch(n){console.warn("Failed to delete rows from database:",n)}return await m(s,"googlesheets.sheets.clearSheet",{...e},"completed"),a},N=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 m(s,"googlesheets.sheets.createSheet",{...e},"completed"),o},$=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 m(s,"googlesheets.sheets.deleteSheet",{...e},"completed"),o},x=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 m(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 d=`Sheet_${e.sheetId}`;for(let i=a;i<n;i++){let l=i+1,R=`${d}!${l}:${l}`,c=`${e.spreadsheetId}_${d}_${R}`;await s.db.rows.deleteByEntityId(c)}}catch(d){console.warn("Failed to delete rows from database:",d)}return await m(s,"googlesheets.sheets.deleteRowsOrColumns",{...e},"completed"),r};import{logEventFromContext as f}from"corsair/core";var L=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 f(s,"googlesheets.spreadsheets.create",{...e},"completed"),o},_=async(s,e)=>{let o=await b(`/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 f(s,"googlesheets.spreadsheets.delete",{...e},"completed")},B=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 b(`/files?${a.toString()}`,s);if(!n.ok){let d=await n.text();throw new Error(`Failed to list spreadsheets: ${n.status} ${d}`)}let r=await n.json();return await f(s,"googlesheets.spreadsheets.list",{...e},"completed"),r};import{z as t}from"zod";var ne=t.object({properties:t.object({title:t.string().optional(),locale:t.string().optional(),timeZone:t.string().optional()}).optional()}),re=t.object({spreadsheetId:t.string()}),pe=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()}),he=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()}),de=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()}),ie=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()}),le=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional()}),ge=t.object({spreadsheetId:t.string(),title:t.string().optional()}),ue=t.object({spreadsheetId:t.string(),sheetId:t.number()}),Se=t.object({spreadsheetId:t.string(),sheetId:t.number(),dimension:t.enum(["ROWS","COLUMNS"]).optional(),startIndex:t.number().optional(),endIndex:t.number().optional()}),ce=t.object({spreadsheetId:t.string()}),me=t.object({pageSize:t.number().optional(),pageToken:t.string().optional(),query:t.string().optional()}),u={spreadsheetsCreate:ne,spreadsheetsDelete:re,spreadsheetsList:me,sheetsAppendRow:pe,sheetsAppendOrUpdateRow:he,sheetsGetRows:de,sheetsUpdateRow:ie,sheetsClearSheet:le,sheetsCreateSheet:ge,sheetsDeleteSheet:ue,sheetsDeleteRowsOrColumns:Se,sheetsListSheetsInSpreadsheet:ce},we=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:we.optional(),spreadsheetUrl:t.string().optional()}),V=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()}),G=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(V).optional()}),Re=t.object({spreadsheetId:t.string().optional(),clearedRange:t.string().optional()}),j=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()}),Ve=t.object({properties:j.optional()}),O=t.object({spreadsheetId:t.string().optional(),replies:t.array(t.any()).optional(),updatedSpreadsheet:q.optional()}),ye=t.object({spreadsheetId:t.string().optional(),sheets:t.array(j).optional()}),Ee=t.object({id:t.string().optional(),name:t.string().optional(),createdTime:t.string().optional(),modifiedTime:t.string().optional(),webViewLink:t.string().optional()}),Ie=t.object({files:t.array(Ee).optional(),nextPageToken:t.string().optional()}),S={spreadsheetsCreate:q,spreadsheetsDelete:t.void(),spreadsheetsList:Ie,sheetsAppendRow:G,sheetsAppendOrUpdateRow:G,sheetsGetRows:V,sheetsUpdateRow:G,sheetsClearSheet:Re,sheetsCreateSheet:O,sheetsDeleteSheet:O,sheetsDeleteRowsOrColumns:O,sheetsListSheetsInSpreadsheet:ye};var I={create:L,delete:_,list:B},w={appendRow:U,appendOrUpdateRow:A,getRows:C,updateRow:D,clearSheet:P,createSheet:N,deleteSheet:$,deleteRowsOrColumns:W,listSheetsInSpreadsheet:x};import{z as h}from"zod";var F=h.object({spreadsheetId:h.string(),title:h.string().optional(),spreadsheetUrl:h.string().optional(),createdAt:h.coerce.date().optional()}),M=h.object({sheetId:h.string(),spreadsheetId:h.string(),title:h.string().optional(),index:h.number().optional(),createdAt:h.coerce.date().optional()}),z=h.object({rowId:h.string(),spreadsheetId:h.string(),sheetName:h.string().optional(),range:h.string().optional(),values:h.array(h.union([h.string(),h.number(),h.boolean(),h.null()])).optional(),createdAt:h.coerce.date().optional()});var K={version:"1.0.0",entities:{spreadsheets:F,sheets:M,rows:z}};import{logEventFromContext as fe}from"corsair/core";import{z as p}from"zod";var H=p.object({spreadsheetId:p.string().optional(),sheetName:p.string().optional(),range:p.string().optional(),values:p.array(p.union([p.string(),p.number(),p.boolean(),p.null()])).optional(),eventType:p.literal("rangeUpdated").optional(),timestamp:p.string().optional(),event:p.unknown().optional()}),Z=p.object({eventType:p.literal("rangeUpdated"),spreadsheetId:p.string(),sheetName:p.string(),range:p.string(),values:p.array(p.union([p.string(),p.number(),p.boolean(),p.null()])),timestamp:p.string()});function be(s){return typeof s=="string"?JSON.parse(s):s}function k(s){return e=>be(e.body).eventType===s}var J={match:k("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 fe(s,"googlesheets.webhook.rangeUpdated",{...a},"completed"),{success:!0,data:a}}};var Q={rangeUpdated:J};import{firstString as Ge,readBodyRecord as Oe}from"corsair/core";function X(s){let e=Oe(s);if(!e)return null;let o=Ge([e.spreadsheetId]);return o?{linkType:"spreadsheet_id",externalId:o}:null}var Te={spreadsheets:{create:I.create,delete:I.delete,list:I.list},sheets:{appendRow:w.appendRow,appendOrUpdateRow:w.appendOrUpdateRow,getRows:w.getRows,updateRow:w.updateRow,clearSheet:w.clearSheet,createSheet:w.createSheet,deleteSheet:w.deleteSheet,deleteRowsOrColumns:w.deleteRowsOrColumns,listSheetsInSpreadsheet:w.listSheetsInSpreadsheet}},Ue={"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}},Ae={rangeUpdated:Q.rangeUpdated},Ce={rangeUpdated:{description:"A range of cells in a Google Sheet was updated",payload:H,response:Z}},De="oauth_2",Pe={"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"},"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"},"sheets.listSheetsInSpreadsheet":{riskLevel:"read",description:"List all sheet tabs in a spreadsheet"}},Ne={oauth_2:{account:["spreadsheet_id"]}};function ut(s={}){let e={...s,authType:s.authType??De};return{id:"googlesheets",authConfig:Ne,schema:K,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:Ae,endpointMeta:Pe,endpointSchemas:Ue,webhookSchemas:Ce,keyBuilder:async o=>{let a=o.authType;if(e.key)return e.key;if(o.authType==="oauth_2")return ve(o,{plugin:"googlesheets",tokenUrl:"https://oauth2.googleapis.com/token"});throw new ke("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},pluginTenantWebhookMatcher:X}}export{k as createGoogleSheetsWebhookMatcher,ut as googlesheets,Ne as googlesheetsAuthConfig,Ue as googlesheetsEndpointSchemas};
1
+ import{AuthMissingError as ke,getOAuthAccessToken as ve}from"corsair/core";import{logEventFromContext as m}from"corsair/core";import{request as Y}from"corsair/http";var ee="https://sheets.googleapis.com/v4";async function v(s,e,o={}){let{method:a="GET",body:n,query:r}=o;return await Y({BASE:ee,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 te(s){return s instanceof Error&&"status"in s&&s.status===401}var se="https://www.googleapis.com/drive/v3";async function T(s,e,o={}){return fetch(`${se}${s}`,{...o,headers:{...o.headers,Authorization:`Bearer ${e}`}})}async function b(s,e,o={}){let a=await T(s,e.key,o);if(a.status===401&&e._refreshAuth){let n=await e._refreshAuth();return T(s,n,o)}return a}async function g(s,e,o={}){try{return await v(s,e.key,o)}catch(a){if(te(a)&&e._refreshAuth){let n=await e._refreshAuth();return await v(s,n,o)}throw a}}var U=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 d=r.updatedRange||o,i=e.sheetName||"Sheet1",l=`${e.spreadsheetId}_${i}_${d}`;await s.db.rows.upsertByEntityId(l,{rowId:l,spreadsheetId:e.spreadsheetId,sheetName:i,range:d,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to save row to database:",r)}return await m(s,"googlesheets.sheets.appendRow",{...e},"completed"),n},A=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}`,d=await g(`/spreadsheets/${e.spreadsheetId}/values/${r}`,s,{method:"GET"}),i=-1;if(d.values){for(let c=0;c<d.values.length;c++)if(d.values[c]?.[0]===String(n)){i=c;break}}let l=e.values?[e.values]:[],R=i>=0?`${o}!${i+1}:${i+1}`:`${o}!A:Z`;if(i>=0){let c=await g(`/spreadsheets/${e.spreadsheetId}/values/${R}`,s,{method:"PUT",query:{valueInputOption:e.valueInputOption||"USER_ENTERED"},body:{values:l,majorDimension:"ROWS"}});if(s.db.rows)try{let y=c.updatedRange||R,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 m(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"update"},"completed"),c}else{let c=await g(`/spreadsheets/${e.spreadsheetId}/values/${R}:append`,s,{method:"POST",query:{valueInputOption:e.valueInputOption||"USER_ENTERED",insertDataOption:e.insertDataOption||"INSERT_ROWS"},body:{values:l,majorDimension:"ROWS"}});if(s.db.rows)try{let y=c.updates?.updatedRange||R,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 m(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"append"},"completed"),c}},C=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 d=a.values[r];if(d){let i=r+1,l=`${n}!${i}:${i}`,R=`${e.spreadsheetId}_${n}_${l}`;await s.db.rows.upsertByEntityId(R,{rowId:R,spreadsheetId:e.spreadsheetId,sheetName:n,range:l,values:d,createdAt:new Date})}}}catch(n){console.warn("Failed to save rows to database:",n)}return await m(s,"googlesheets.sheets.getRows",{...e},"completed"),a},D=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 d=r.updatedRange||o,i=e.sheetName||"Sheet1",l=`${e.spreadsheetId}_${i}_${d}`;await s.db.rows.upsertByEntityId(l,{rowId:l,spreadsheetId:e.spreadsheetId,sheetName:i,range:d,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to update row in database:",r)}return await m(s,"googlesheets.sheets.updateRow",{...e},"completed"),n},P=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,d=`${e.spreadsheetId}_${n}_${r}`;await s.db.rows.deleteByEntityId(d)}catch(n){console.warn("Failed to delete rows from database:",n)}return await m(s,"googlesheets.sheets.clearSheet",{...e},"completed"),a},N=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 m(s,"googlesheets.sheets.createSheet",{...e},"completed"),o},$=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 m(s,"googlesheets.sheets.deleteSheet",{...e},"completed"),o},x=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 m(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 d=`Sheet_${e.sheetId}`;for(let i=a;i<n;i++){let l=i+1,R=`${d}!${l}:${l}`,c=`${e.spreadsheetId}_${d}_${R}`;await s.db.rows.deleteByEntityId(c)}}catch(d){console.warn("Failed to delete rows from database:",d)}return await m(s,"googlesheets.sheets.deleteRowsOrColumns",{...e},"completed"),r};import{logEventFromContext as f}from"corsair/core";var L=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 f(s,"googlesheets.spreadsheets.create",{...e},"completed"),o},_=async(s,e)=>{let o=await b(`/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 f(s,"googlesheets.spreadsheets.delete",{...e},"completed")},B=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 b(`/files?${a.toString()}`,s);if(!n.ok){let d=await n.text();throw new Error(`Failed to list spreadsheets: ${n.status} ${d}`)}let r=await n.json();return await f(s,"googlesheets.spreadsheets.list",{...e},"completed"),r};import{z as t}from"zod";var ne=t.object({properties:t.object({title:t.string().optional(),locale:t.string().optional(),timeZone:t.string().optional()}).optional()}),re=t.object({spreadsheetId:t.string()}),pe=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()}),he=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()}),de=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()}),ie=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()}),le=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional()}),ge=t.object({spreadsheetId:t.string(),title:t.string().optional()}),ue=t.object({spreadsheetId:t.string(),sheetId:t.number()}),Se=t.object({spreadsheetId:t.string(),sheetId:t.number(),dimension:t.enum(["ROWS","COLUMNS"]).optional(),startIndex:t.number().optional(),endIndex:t.number().optional()}),ce=t.object({spreadsheetId:t.string()}),me=t.object({pageSize:t.number().optional(),pageToken:t.string().optional(),query:t.string().optional()}),u={spreadsheetsCreate:ne,spreadsheetsDelete:re,spreadsheetsList:me,sheetsAppendRow:pe,sheetsAppendOrUpdateRow:he,sheetsGetRows:de,sheetsUpdateRow:ie,sheetsClearSheet:le,sheetsCreateSheet:ge,sheetsDeleteSheet:ue,sheetsDeleteRowsOrColumns:Se,sheetsListSheetsInSpreadsheet:ce},we=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:we.optional(),spreadsheetUrl:t.string().optional()}),V=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()}),G=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(V).optional()}),Re=t.object({spreadsheetId:t.string().optional(),clearedRange:t.string().optional()}),j=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()}),Ve=t.object({properties:j.optional()}),O=t.object({spreadsheetId:t.string().optional(),replies:t.array(t.any()).optional(),updatedSpreadsheet:q.optional()}),ye=t.object({spreadsheetId:t.string().optional(),sheets:t.array(j).optional()}),Ee=t.object({id:t.string().optional(),name:t.string().optional(),createdTime:t.string().optional(),modifiedTime:t.string().optional(),webViewLink:t.string().optional()}),Ie=t.object({files:t.array(Ee).optional(),nextPageToken:t.string().optional()}),S={spreadsheetsCreate:q,spreadsheetsDelete:t.void(),spreadsheetsList:Ie,sheetsAppendRow:G,sheetsAppendOrUpdateRow:G,sheetsGetRows:V,sheetsUpdateRow:G,sheetsClearSheet:Re,sheetsCreateSheet:O,sheetsDeleteSheet:O,sheetsDeleteRowsOrColumns:O,sheetsListSheetsInSpreadsheet:ye};var I={create:L,delete:_,list:B},w={appendRow:U,appendOrUpdateRow:A,getRows:C,updateRow:D,clearSheet:P,createSheet:N,deleteSheet:$,deleteRowsOrColumns:W,listSheetsInSpreadsheet:x};import{z as h}from"zod";var F=h.object({spreadsheetId:h.string(),title:h.string().optional(),spreadsheetUrl:h.string().optional(),createdAt:h.coerce.date().optional()}),M=h.object({sheetId:h.string(),spreadsheetId:h.string(),title:h.string().optional(),index:h.number().optional(),createdAt:h.coerce.date().optional()}),z=h.object({rowId:h.string(),spreadsheetId:h.string(),sheetName:h.string().optional(),range:h.string().optional(),values:h.array(h.union([h.string(),h.number(),h.boolean(),h.null()])).optional(),createdAt:h.coerce.date().optional()});var K={version:"1.0.0",entities:{spreadsheets:F,sheets:M,rows:z}};import{logEventFromContext as fe}from"corsair/core";import{z as p}from"zod";var H=p.object({spreadsheetId:p.string().optional(),sheetName:p.string().optional(),range:p.string().optional(),values:p.array(p.union([p.string(),p.number(),p.boolean(),p.null()])).optional(),eventType:p.literal("rangeUpdated").optional(),timestamp:p.string().optional(),event:p.unknown().optional()}),Z=p.object({eventType:p.literal("rangeUpdated"),spreadsheetId:p.string(),sheetName:p.string(),range:p.string(),values:p.array(p.union([p.string(),p.number(),p.boolean(),p.null()])),timestamp:p.string()});function be(s){return typeof s=="string"?JSON.parse(s):s}function k(s){return e=>be(e.body).eventType===s}var J={match:k("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 fe(s,"googlesheets.webhook.rangeUpdated",{...a},"completed"),{success:!0,data:a}}};var Q={rangeUpdated:J};import{firstString as Ge,readBodyRecord as Oe}from"corsair/core";function X(s){let e=Oe(s);if(!e)return null;let o=Ge([e.spreadsheetId]);return o?{linkType:"spreadsheet_id",externalId:o}:null}var Te={spreadsheets:{create:I.create,delete:I.delete,list:I.list},sheets:{appendRow:w.appendRow,appendOrUpdateRow:w.appendOrUpdateRow,getRows:w.getRows,updateRow:w.updateRow,clearSheet:w.clearSheet,createSheet:w.createSheet,deleteSheet:w.deleteSheet,deleteRowsOrColumns:w.deleteRowsOrColumns,listSheetsInSpreadsheet:w.listSheetsInSpreadsheet}},Ue={"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}},Ae={rangeUpdated:Q.rangeUpdated},Ce={rangeUpdated:{description:"A range of cells in a Google Sheet was updated",payload:H,response:Z}},De="oauth_2",Pe={"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"},"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"},"sheets.listSheetsInSpreadsheet":{riskLevel:"read",description:"List all sheet tabs in a spreadsheet"}},Ne={oauth_2:{account:["spreadsheet_id"]}};function ut(s={}){let e={...s,authType:s.authType??De};return{id:"googlesheets",authConfig:Ne,schema:K,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"],authParams:{access_type:"offline",prompt:"consent"}},hooks:e.hooks,webhookHooks:e.webhookHooks,endpoints:Te,webhooks:Ae,endpointMeta:Pe,endpointSchemas:Ue,webhookSchemas:Ce,keyBuilder:async o=>{let a=o.authType;if(e.key)return e.key;if(o.authType==="oauth_2")return ve(o,{plugin:"googlesheets",tokenUrl:"https://oauth2.googleapis.com/token"});throw new ke("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},pluginTenantWebhookMatcher:X}}export{k as createGoogleSheetsWebhookMatcher,ut as googlesheets,Ne as googlesheetsAuthConfig,Ue as googlesheetsEndpointSchemas};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corsair-dev/googlesheets",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Google sheets plugin for Corsair",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,7 +28,7 @@
28
28
  "typescript": "^5.9.3",
29
29
  "zod": "^4.1.13",
30
30
  "jest": "^29.7.0",
31
- "corsair": "0.1.129"
31
+ "corsair": "0.1.138"
32
32
  },
33
33
  "keywords": [
34
34
  "corsair",