@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>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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;
|
|
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>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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 @@
|
|
|
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.
|
|
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.
|
|
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
|
-
"
|
|
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",
|