@corsair-dev/googlesheets 0.1.0
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/LICENSE +191 -0
- package/dist/client.d.ts +28 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/endpoints/index.d.ts +68 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/sheets.d.ts +10 -0
- package/dist/endpoints/sheets.d.ts.map +1 -0
- package/dist/endpoints/spreadsheets.d.ts +4 -0
- package/dist/endpoints/spreadsheets.d.ts.map +1 -0
- package/dist/endpoints/types.d.ts +588 -0
- package/dist/endpoints/types.d.ts.map +1 -0
- package/dist/index.d.ts +661 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/schema/database.d.ts +62 -0
- package/dist/schema/database.d.ts.map +1 -0
- package/dist/schema/index.d.ts +63 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/tsup.config.d.ts +3 -0
- package/dist/tsup.config.d.ts.map +1 -0
- package/dist/types.d.ts +687 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/webhooks/index.d.ts +22 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/rows.d.ts +3 -0
- package/dist/webhooks/rows.d.ts.map +1 -0
- package/dist/webhooks/types.d.ts +64 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{request as J}from"corsair/http";var I=class extends Error{constructor(o,a){super(o);this.code=a;this.name="GoogleSheetsAPIError"}},Q="https://sheets.googleapis.com/v4";async function X(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 I(`Failed to refresh access token: ${r}`,a.status)}return await a.json()}async function f({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 l=await X(o,a,n);return{accessToken:l.access_token,expiresAt:p+l.expires_in,refreshed:!0}}async function T(s,e,o={}){let{method:a="GET",body:n,query:r}=o;return await J({BASE:Q,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 Y(s){return s instanceof Error&&"status"in s&&s.status===401}async function g(s,e,o={}){try{return await T(s,e.key,o)}catch(a){if(Y(a)&&e._refreshAuth){let n=await e._refreshAuth();return await T(s,n,o)}throw a}}import{logEventFromContext as R}from"corsair/core";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 p=r.updatedRange||o,d=e.sheetName||"Sheet1",l=`${e.spreadsheetId}_${d}_${p}`;await s.db.rows.upsertByEntityId(l,{rowId:l,spreadsheetId:e.spreadsheetId,sheetName:d,range:p,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to save row to database:",r)}return await R(s,"googlesheets.sheets.appendRow",{...e},"completed"),n},C=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"}),d=-1;if(p.values){for(let c=0;c<p.values.length;c++)if(p.values[c]?.[0]===String(n)){d=c;break}}let l=e.values?[e.values]:[],m=d>=0?`${o}!${d+1}:${d+1}`:`${o}!A:Z`;if(d>=0){let c=await g(`/spreadsheets/${e.spreadsheetId}/values/${m}`,s,{method:"PUT",query:{valueInputOption:e.valueInputOption||"USER_ENTERED"},body:{values:l,majorDimension:"ROWS"}});if(c.responses&&c.responses.length>0&&s.db.rows)try{let w=c.responses[0];if(w){let E=w.updatedRange||m,b=`${e.spreadsheetId}_${o}_${E}`;await s.db.rows.upsertByEntityId(b,{rowId:b,spreadsheetId:e.spreadsheetId,sheetName:o,range:E,values:e.values,createdAt:new Date})}}catch(w){console.warn("Failed to update row in database:",w)}return await R(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"update"},"completed"),c}else{let c=await g(`/spreadsheets/${e.spreadsheetId}/values/${m}:append`,s,{method:"POST",query:{valueInputOption:e.valueInputOption||"USER_ENTERED",insertDataOption:e.insertDataOption||"INSERT_ROWS"},body:{values:l,majorDimension:"ROWS"}});if(c.responses&&c.responses.length>0&&s.db.rows)try{let w=c.responses[0];if(w){let E=w.updatedRange||m,b=`${e.spreadsheetId}_${o}_${E}`;await s.db.rows.upsertByEntityId(b,{rowId:b,spreadsheetId:e.spreadsheetId,sheetName:o,range:E,values:e.values,createdAt:new Date})}}catch(w){console.warn("Failed to save row to database:",w)}return await R(s,"googlesheets.sheets.appendOrUpdateRow",{...e,action:"append"},"completed"),c}},A=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 d=r+1,l=`${n}!${d}:${d}`,m=`${e.spreadsheetId}_${n}_${l}`;await s.db.rows.upsertByEntityId(m,{rowId:m,spreadsheetId:e.spreadsheetId,sheetName:n,range:l,values:p,createdAt:new Date})}}}catch(n){console.warn("Failed to save rows to database:",n)}return await R(s,"googlesheets.sheets.getRows",{...e},"completed"),a},_=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,d=e.sheetName||"Sheet1",l=`${e.spreadsheetId}_${d}_${p}`;await s.db.rows.upsertByEntityId(l,{rowId:l,spreadsheetId:e.spreadsheetId,sheetName:d,range:p,values:e.values,createdAt:new Date})}}catch(r){console.warn("Failed to update row in database:",r)}return await R(s,"googlesheets.sheets.updateRow",{...e},"completed"),n},D=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 R(s,"googlesheets.sheets.clearSheet",{...e},"completed"),a},P=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 R(s,"googlesheets.sheets.createSheet",{...e},"completed"),o},N=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 R(s,"googlesheets.sheets.deleteSheet",{...e},"completed"),o},$=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 d=a;d<n;d++){let l=d+1,m=`${p}!${l}:${l}`,c=`${e.spreadsheetId}_${p}_${m}`;await s.db.rows.deleteByEntityId(c)}}catch(p){console.warn("Failed to delete rows from database:",p)}return await R(s,"googlesheets.sheets.deleteRowsOrColumns",{...e},"completed"),r};import{logEventFromContext as x}from"corsair/core";var W=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 x(s,"googlesheets.spreadsheets.create",{...e},"completed"),o},B=async(s,e)=>{let o=await fetch(`https://www.googleapis.com/drive/v3/files/${e.spreadsheetId}`,{method:"DELETE",headers:{Authorization:`Bearer ${s.key}`}});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 x(s,"googlesheets.spreadsheets.delete",{...e},"completed")};import{z as t}from"zod";var se=t.object({properties:t.object({title:t.string().optional(),locale:t.string().optional(),timeZone:t.string().optional()}).optional()}),oe=t.object({spreadsheetId:t.string()}),ae=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()}),ne=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),keyColumn:t.string().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()}),re=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()}),pe=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()}),de=t.object({spreadsheetId:t.string(),sheetName:t.string().optional(),range:t.string().optional()}),he=t.object({spreadsheetId:t.string(),title:t.string().optional()}),ie=t.object({spreadsheetId:t.string(),sheetId:t.number()}),le=t.object({spreadsheetId:t.string(),sheetId:t.number(),dimension:t.enum(["ROWS","COLUMNS"]).optional(),startIndex:t.number().optional(),endIndex:t.number().optional()}),u={spreadsheetsCreate:se,spreadsheetsDelete:oe,sheetsAppendRow:ae,sheetsAppendOrUpdateRow:ne,sheetsGetRows:re,sheetsUpdateRow:pe,sheetsClearSheet:de,sheetsCreateSheet:he,sheetsDeleteSheet:ie,sheetsDeleteRowsOrColumns:le},ce=t.object({title:t.string().optional(),locale:t.string().optional(),autoRecalc:t.enum(["ON_CHANGE","ON_UPDATE","HOUR","MINUTE"]).optional(),timeZone:t.string().optional()}),j=t.object({spreadsheetId:t.string().optional(),properties:ce.optional(),spreadsheetUrl:t.string().optional()}),q=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(q).optional()}),ge=t.object({spreadsheetId:t.string().optional(),clearedRange:t.string().optional()}),ue=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()}),Ce=t.object({properties:ue.optional()}),k=t.object({spreadsheetId:t.string().optional(),replies:t.array(t.any()).optional(),updatedSpreadsheet:j.optional()}),S={spreadsheetsCreate:j,spreadsheetsDelete:t.void(),sheetsAppendRow:O,sheetsAppendOrUpdateRow:O,sheetsGetRows:q,sheetsUpdateRow:O,sheetsClearSheet:ge,sheetsCreateSheet:k,sheetsDeleteSheet:k,sheetsDeleteRowsOrColumns:k};var G={create:W,delete:B},y={appendRow:U,appendOrUpdateRow:C,getRows:A,updateRow:_,clearSheet:D,createSheet:P,deleteSheet:N,deleteRowsOrColumns:$};import{z as i}from"zod";var V=i.object({spreadsheetId:i.string(),title:i.string().optional(),spreadsheetUrl:i.string().optional(),createdAt:i.coerce.date().optional()}),F=i.object({sheetId:i.string(),spreadsheetId:i.string(),title:i.string().optional(),index:i.number().optional(),createdAt:i.coerce.date().optional()}),L=i.object({rowId:i.string(),spreadsheetId:i.string(),sheetName:i.string().optional(),range:i.string().optional(),values:i.array(i.union([i.string(),i.number(),i.boolean(),i.null()])).optional(),createdAt:i.coerce.date().optional()});var M={version:"1.0.0",entities:{spreadsheets:V,sheets:F,rows:L}};import{logEventFromContext as me}from"corsair/core";import{z as h}from"zod";var K=h.object({spreadsheetId:h.string().optional(),sheetName:h.string().optional(),range:h.string().optional(),values:h.array(h.union([h.string(),h.number(),h.boolean(),h.null()])).optional(),eventType:h.literal("rangeUpdated").optional(),timestamp:h.string().optional(),event:h.unknown().optional()}),z=h.object({eventType:h.literal("rangeUpdated"),spreadsheetId:h.string(),sheetName:h.string(),range:h.string(),values:h.array(h.union([h.string(),h.number(),h.boolean(),h.null()])),timestamp:h.string()});function Se(s){return typeof s=="string"?JSON.parse(s):s}function v(s){return e=>Se(e.body).eventType===s}var H={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 me(s,"googlesheets.webhook.rangeUpdated",{...a},"completed"),{success:!0,data:a}}};var Z={rangeUpdated:H};var we={spreadsheets:{create:G.create,delete:G.delete},sheets:{appendRow:y.appendRow,appendOrUpdateRow:y.appendOrUpdateRow,getRows:y.getRows,updateRow:y.updateRow,clearSheet:y.clearSheet,createSheet:y.createSheet,deleteSheet:y.deleteSheet,deleteRowsOrColumns:y.deleteRowsOrColumns}},Re={"spreadsheets.create":{input:u.spreadsheetsCreate,output:S.spreadsheetsCreate},"spreadsheets.delete":{input:u.spreadsheetsDelete,output:S.spreadsheetsDelete},"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}},ye={rangeUpdated:Z.rangeUpdated},Ee={rangeUpdated:{description:"A range of cells in a Google Sheet was updated",payload:K,response:z}},be="oauth_2",Ie={"spreadsheets.create":{riskLevel:"write",description:"Create a new spreadsheet"},"spreadsheets.delete":{riskLevel:"destructive",irreversible:!0,description:"Permanently delete a spreadsheet [DESTRUCTIVE \xB7 IRREVERSIBLE]"},"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]"}};function Xe(s={}){let e={...s,authType:s.authType??be};return{id:"googlesheets",schema:M,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"],authParams:{access_type:"offline",prompt:"consent"}},hooks:e.hooks,webhookHooks:e.webhookHooks,endpoints:we,webhooks:ye,endpointMeta:Ie,endpointSchemas:Re,webhookSchemas:Ee,keyBuilder:async o=>{if(e.key)return e.key;if(o.authType==="oauth_2"){let[a,n,r]=await Promise.all([o.keys.get_access_token(),o.keys.get_expires_at(),o.keys.get_refresh_token()]);if(!r)throw new Error("[corsair:googlesheets] No refresh token. Cannot get access token.");let p=await o.keys.get_integration_credentials();if(!p.client_id||!p.client_secret)throw new Error("[corsair:googlesheets] No client id or client secret");try{let d=await f({accessToken:a,expiresAt:n,refreshToken:r,clientId:p.client_id,clientSecret:p.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 l=await f({accessToken:null,expiresAt:null,refreshToken:r,clientId:p.client_id,clientSecret:p.client_secret,forceRefresh:!0});return await o.keys.set_access_token(l.accessToken),await o.keys.set_expires_at(String(l.expiresAt)),l.accessToken},d.accessToken}catch(d){throw new Error(`[corsair:googlesheets] Failed to get valid access token: ${d instanceof Error?d.message:String(d)}`)}}return""},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,Xe as googlesheets,Re as googlesheetsEndpointSchemas};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const GoogleSheetsSpreadsheet: z.ZodObject<{
|
|
3
|
+
spreadsheetId: z.ZodString;
|
|
4
|
+
title: z.ZodOptional<z.ZodString>;
|
|
5
|
+
spreadsheetUrl: z.ZodOptional<z.ZodString>;
|
|
6
|
+
createdAt: z.ZodOptional<z.ZodDate>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
spreadsheetId: string;
|
|
9
|
+
title?: string | undefined;
|
|
10
|
+
spreadsheetUrl?: string | undefined;
|
|
11
|
+
createdAt?: Date | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
spreadsheetId: string;
|
|
14
|
+
title?: string | undefined;
|
|
15
|
+
spreadsheetUrl?: string | undefined;
|
|
16
|
+
createdAt?: Date | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const GoogleSheetsSheet: z.ZodObject<{
|
|
19
|
+
sheetId: z.ZodString;
|
|
20
|
+
spreadsheetId: z.ZodString;
|
|
21
|
+
title: z.ZodOptional<z.ZodString>;
|
|
22
|
+
index: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
createdAt: z.ZodOptional<z.ZodDate>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
spreadsheetId: string;
|
|
26
|
+
sheetId: string;
|
|
27
|
+
title?: string | undefined;
|
|
28
|
+
index?: number | undefined;
|
|
29
|
+
createdAt?: Date | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
spreadsheetId: string;
|
|
32
|
+
sheetId: string;
|
|
33
|
+
title?: string | undefined;
|
|
34
|
+
index?: number | undefined;
|
|
35
|
+
createdAt?: Date | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
export declare const GoogleSheetsRow: z.ZodObject<{
|
|
38
|
+
rowId: z.ZodString;
|
|
39
|
+
spreadsheetId: z.ZodString;
|
|
40
|
+
sheetName: z.ZodOptional<z.ZodString>;
|
|
41
|
+
range: z.ZodOptional<z.ZodString>;
|
|
42
|
+
values: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many">>;
|
|
43
|
+
createdAt: z.ZodOptional<z.ZodDate>;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
spreadsheetId: string;
|
|
46
|
+
rowId: string;
|
|
47
|
+
range?: string | undefined;
|
|
48
|
+
values?: (string | number | boolean | null)[] | undefined;
|
|
49
|
+
sheetName?: string | undefined;
|
|
50
|
+
createdAt?: Date | undefined;
|
|
51
|
+
}, {
|
|
52
|
+
spreadsheetId: string;
|
|
53
|
+
rowId: string;
|
|
54
|
+
range?: string | undefined;
|
|
55
|
+
values?: (string | number | boolean | null)[] | undefined;
|
|
56
|
+
sheetName?: string | undefined;
|
|
57
|
+
createdAt?: Date | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
export type GoogleSheetsSpreadsheet = z.infer<typeof GoogleSheetsSpreadsheet>;
|
|
60
|
+
export type GoogleSheetsSheet = z.infer<typeof GoogleSheetsSheet>;
|
|
61
|
+
export type GoogleSheetsRow = z.infer<typeof GoogleSheetsRow>;
|
|
62
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../schema/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAS1B,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export declare const GoogleSheetsSchema: {
|
|
2
|
+
readonly version: "1.0.0";
|
|
3
|
+
readonly entities: {
|
|
4
|
+
readonly spreadsheets: import("zod").ZodObject<{
|
|
5
|
+
spreadsheetId: import("zod").ZodString;
|
|
6
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
7
|
+
spreadsheetUrl: import("zod").ZodOptional<import("zod").ZodString>;
|
|
8
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
|
|
9
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
10
|
+
spreadsheetId: string;
|
|
11
|
+
title?: string | undefined;
|
|
12
|
+
spreadsheetUrl?: string | undefined;
|
|
13
|
+
createdAt?: Date | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
spreadsheetId: string;
|
|
16
|
+
title?: string | undefined;
|
|
17
|
+
spreadsheetUrl?: string | undefined;
|
|
18
|
+
createdAt?: Date | undefined;
|
|
19
|
+
}>;
|
|
20
|
+
readonly sheets: import("zod").ZodObject<{
|
|
21
|
+
sheetId: import("zod").ZodString;
|
|
22
|
+
spreadsheetId: import("zod").ZodString;
|
|
23
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
24
|
+
index: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
25
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
|
|
26
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
27
|
+
spreadsheetId: string;
|
|
28
|
+
sheetId: string;
|
|
29
|
+
title?: string | undefined;
|
|
30
|
+
index?: number | undefined;
|
|
31
|
+
createdAt?: Date | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
spreadsheetId: string;
|
|
34
|
+
sheetId: string;
|
|
35
|
+
title?: string | undefined;
|
|
36
|
+
index?: number | undefined;
|
|
37
|
+
createdAt?: Date | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
readonly rows: import("zod").ZodObject<{
|
|
40
|
+
rowId: import("zod").ZodString;
|
|
41
|
+
spreadsheetId: import("zod").ZodString;
|
|
42
|
+
sheetName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
43
|
+
range: import("zod").ZodOptional<import("zod").ZodString>;
|
|
44
|
+
values: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean, import("zod").ZodNull]>, "many">>;
|
|
45
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
|
|
46
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
47
|
+
spreadsheetId: string;
|
|
48
|
+
rowId: string;
|
|
49
|
+
range?: string | undefined;
|
|
50
|
+
values?: (string | number | boolean | null)[] | undefined;
|
|
51
|
+
sheetName?: string | undefined;
|
|
52
|
+
createdAt?: Date | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
spreadsheetId: string;
|
|
55
|
+
rowId: string;
|
|
56
|
+
range?: string | undefined;
|
|
57
|
+
values?: (string | number | boolean | null)[] | undefined;
|
|
58
|
+
sheetName?: string | undefined;
|
|
59
|
+
createdAt?: Date | undefined;
|
|
60
|
+
}>;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOrB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const _default: import("tsup").Options | import("tsup").Options[] | ((overrideOptions: import("tsup").Options) => import("tsup").Options | import("tsup").Options[] | Promise<import("tsup").Options | import("tsup").Options[]>);
|
|
2
|
+
export default _default;
|
|
3
|
+
//# sourceMappingURL=tsup.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsup.config.d.ts","sourceRoot":"","sources":["../tsup.config.ts"],"names":[],"mappings":";AAEA,wBAYG"}
|