@corsair-dev/googlesheets 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -2,18 +2,6 @@ export declare class GoogleSheetsAPIError extends Error {
2
2
  readonly code?: number | undefined;
3
3
  constructor(message: string, code?: number | undefined);
4
4
  }
5
- export declare function getValidAccessToken({ accessToken, expiresAt, clientId, clientSecret, refreshToken, forceRefresh, }: {
6
- clientId: string;
7
- clientSecret: string;
8
- accessToken?: string | null;
9
- expiresAt?: string | null;
10
- refreshToken: string;
11
- forceRefresh?: boolean;
12
- }): Promise<{
13
- accessToken: string;
14
- expiresAt: number;
15
- refreshed: boolean;
16
- }>;
17
5
  type SheetsRequestOptions = {
18
6
  method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
19
7
  body?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAGA,qBAAa,oBAAqB,SAAQ,KAAK;aAG7B,IAAI,CAAC,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAK9B;AAsCD,wBAAsB,mBAAmB,CAAC,EACzC,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAoB,GACpB,EAAE;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAuB1E;AAED,KAAK,oBAAoB,GAAG;IAC3B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC9D,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,CAAC,EACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAuBD,wBAAsB,6BAA6B,CAClD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,EAC1D,OAAO,GAAE,WAAgB,GACvB,OAAO,CAAC,QAAQ,CAAC,CAOnB;AAED,wBAAsB,8BAA8B,CAAC,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,EAC1D,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC,CAAC,CAAC,CAUZ"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAGA,qBAAa,oBAAqB,SAAQ,KAAK;aAG7B,IAAI,CAAC,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAK9B;AAID,KAAK,oBAAoB,GAAG;IAC3B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC9D,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,CAAC,EACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAuBD,wBAAsB,6BAA6B,CAClD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,EAC1D,OAAO,GAAE,WAAgB,GACvB,OAAO,CAAC,QAAQ,CAAC,CAOnB;AAED,wBAAsB,8BAA8B,CAAC,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,EAC1D,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC,CAAC,CAAC,CAUZ"}
package/dist/index.d.ts CHANGED
@@ -345,6 +345,11 @@ export type GoogleSheetsPluginOptions = {
345
345
  };
346
346
  export type GoogleSheetsKeyBuilderContext = KeyBuilderContext<GoogleSheetsPluginOptions>;
347
347
  declare const defaultAuthType: "oauth_2";
348
+ export declare const googlesheetsAuthConfig: {
349
+ readonly oauth_2: {
350
+ readonly account: readonly ["spreadsheet_id"];
351
+ };
352
+ };
348
353
  export type BaseGoogleSheetsPlugin<T extends GoogleSheetsPluginOptions> = CorsairPlugin<'googlesheets', typeof GoogleSheetsSchema, typeof googleSheetsEndpointsNested, typeof googleSheetsWebhooksNested, T, typeof defaultAuthType>;
349
354
  export type InternalGoogleSheetsPlugin = BaseGoogleSheetsPlugin<GoogleSheetsPluginOptions>;
350
355
  export type ExternalGoogleSheetsPlugin<T extends GoogleSheetsPluginOptions> = BaseGoogleSheetsPlugin<T>;
@@ -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{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 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 [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"}},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};
@@ -0,0 +1,3 @@
1
+ import type { RawWebhookRequest, WebhookTenantMatch } from 'corsair/core';
2
+ export declare function matchGoogleSheetsTenantWebhook(request: RawWebhookRequest): WebhookTenantMatch | null;
3
+ //# sourceMappingURL=tenant-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-matcher.d.ts","sourceRoot":"","sources":["../../webhooks/tenant-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAI1E,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,iBAAiB,GACxB,kBAAkB,GAAG,IAAI,CAQ3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corsair-dev/googlesheets",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Google sheets plugin for Corsair",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  }
19
19
  },
20
20
  "peerDependencies": {
21
- "corsair": ">=0.1.0",
21
+ "corsair": ">=0.1.120",
22
22
  "zod": "^4.1.13"
23
23
  },
24
24
  "devDependencies": {
@@ -27,7 +27,8 @@
27
27
  "tsup": "^8.0.1",
28
28
  "typescript": "^5.9.3",
29
29
  "zod": "^4.1.13",
30
- "corsair": "0.1.69"
30
+ "jest": "^29.7.0",
31
+ "corsair": "0.1.120"
31
32
  },
32
33
  "keywords": [
33
34
  "corsair",
@@ -39,9 +40,6 @@
39
40
  "files": [
40
41
  "dist"
41
42
  ],
42
- "dependencies": {
43
- "jest": "^29.7.0"
44
- },
45
43
  "scripts": {
46
44
  "build": "rm -rf dist && tsc --build --force && tsup",
47
45
  "typecheck": "tsc --noEmit",