@corsair-dev/googlecalendar 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBhC,CAAC;AAEX,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;CAExB,CAAC;AAEX,MAAM,MAAM,2BAA2B,GAAG;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC9C,YAAY,CAAC,EAAE,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAC5D;;;;OAIG;IACH,WAAW,CAAC,EAAE,uBAAuB,CAAC,OAAO,6BAA6B,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAC1C,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;AAUhD,QAAA,MAAM,eAAe,EAAG,SAAkB,CAAC;AA8B3C,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,2BAA2B,IACzE,aAAa,CACZ,gBAAgB,EAChB,OAAO,oBAAoB,EAC3B,OAAO,6BAA6B,EACpC,OAAO,4BAA4B,EACnC,CAAC,EACD,OAAO,eAAe,CACtB,CAAC;AAEH,MAAM,MAAM,4BAA4B,GACvC,wBAAwB,CAAC,2BAA2B,CAAC,CAAC;AAEvD,MAAM,MAAM,4BAA4B,CACvC,CAAC,SAAS,2BAA2B,IAClC,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAEhC,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,2BAA2B,EACzE,eAAe,GAAE,2BAA2B,GAC3C,CAAyC,GACxC,4BAA4B,CAAC,CAAC,CAAC,CAkHjC;AAMD,YAAY,EACX,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,EAC5B,aAAa,EACb,kBAAkB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,kCAAkC,EAClC,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAM1B,YAAY,EACX,4BAA4B,EAC5B,mCAAmC,EACnC,6BAA6B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,mBAAmB,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBhC,CAAC;AAEX,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;CAExB,CAAC;AAEX,MAAM,MAAM,2BAA2B,GAAG;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC9C,YAAY,CAAC,EAAE,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAC5D;;;;OAIG;IACH,WAAW,CAAC,EAAE,uBAAuB,CAAC,OAAO,6BAA6B,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAC1C,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;AAUhD,QAAA,MAAM,eAAe,EAAG,SAAkB,CAAC;AA8B3C,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,2BAA2B,IACzE,aAAa,CACZ,gBAAgB,EAChB,OAAO,oBAAoB,EAC3B,OAAO,6BAA6B,EACpC,OAAO,4BAA4B,EACnC,CAAC,EACD,OAAO,eAAe,CACtB,CAAC;AAEH,MAAM,MAAM,4BAA4B,GACvC,wBAAwB,CAAC,2BAA2B,CAAC,CAAC;AAEvD,MAAM,MAAM,4BAA4B,CACvC,CAAC,SAAS,2BAA2B,IAClC,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAEhC,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,2BAA2B,EACzE,eAAe,GAAE,2BAA2B,GAC3C,CAAyC,GACxC,4BAA4B,CAAC,CAAC,CAAC,CAsHjC;AAMD,YAAY,EACX,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,EAC5B,aAAa,EACb,kBAAkB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,kCAAkC,EAClC,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAM1B,YAAY,EACX,4BAA4B,EAC5B,mCAAmC,EACnC,6BAA6B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,mBAAmB,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{request as J}from"corsair/http";var G=class extends Error{constructor(r,a){super(r);this.code=a;this.name="GoogleCalendarAPIError"}},Q="https://www.googleapis.com/calendar/v3";async function X(t,n,r){let a=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:t,client_secret:n,refresh_token:r,grant_type:"refresh_token"})});if(!a.ok){let p=await a.text();throw new G(`Failed to refresh access token: ${p}`,a.status)}return await a.json()}async function k({accessToken:t,expiresAt:n,clientId:r,clientSecret:a,refreshToken:s,forceRefresh:p=!1}){let d=Math.floor(Date.now()/1e3);if(!p&&t&&n&&Number(n)>d+300)return{accessToken:t,expiresAt:Number(n),refreshed:!1};let c=await X(r,a,s);return{accessToken:c.access_token,expiresAt:d+c.expires_in,refreshed:!0}}async function h(t,n,r={}){let{method:a="GET",body:s,query:p}=r;return await J({BASE:Q,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:n,HEADERS:{"Content-Type":"application/json"}},{method:a,url:t,body:a==="POST"||a==="PUT"||a==="PATCH"?s:void 0,mediaType:"application/json",query:p})}function ee(t){return t instanceof Error&&"status"in t&&t.status===401}async function u(t,n,r={}){try{return await h(t,n.key,r)}catch(a){if(ee(a)&&n._refreshAuth){let s=await n._refreshAuth();return await h(t,s,r)}throw a}}import{logEventFromContext as te}from"corsair/core";var x=async(t,n)=>{let r=await u("/freeBusy",t,{method:"POST",body:{timeMin:n.timeMin,timeMax:n.timeMax,timeZone:n.timeZone,groupExpansionMax:n.groupExpansionMax,calendarExpansionMax:n.calendarExpansionMax,items:n.items}});return await te(t,"googlecalendar.calendar.getAvailability",{...n},"completed"),r};import{logEventFromContext as E}from"corsair/core";var P=async(t,n)=>{let r=n.calendarId||"primary",a=await u(`/calendars/${r}/events`,t,{method:"POST",body:n.event});if(a.id&&t.db.events)try{await t.db.events.upsertByEntityId(a.id,{...a,id:a.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save event to database:",s)}return await E(t,"googlecalendar.events.create",{...n},"completed"),a},A=async(t,n)=>{let r=n.calendarId||"primary",a=await u(`/calendars/${r}/events/${n.id}`,t,{method:"GET",query:{timeZone:n.timeZone,maxAttendees:n.maxAttendees}});if(a.id&&t.db.events)try{await t.db.events.upsertByEntityId(a.id,{...a,id:a.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save event to database:",s)}return await E(t,"googlecalendar.events.get",{...n},"completed"),a},D=async(t,n)=>{let r=n.calendarId||"primary",a=await u(`/calendars/${r}/events`,t,{method:"GET",query:n});if(a.items&&t.db.events)try{for(let s of a.items)s.id&&await t.db.events.upsertByEntityId(s.id,{...s,id:s.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save events to database:",s)}return await E(t,"googlecalendar.events.getMany",{...n},"completed"),a},O=async(t,n)=>{let r=n.calendarId||"primary",a=await u(`/calendars/${r}/events/${n.id}`,t,{method:"PUT",body:n.event,query:{sendUpdates:n.sendUpdates,sendNotifications:n.sendNotifications,conferenceDataVersion:n.conferenceDataVersion,maxAttendees:n.maxAttendees,supportsAttachments:n.supportsAttachments}});if(a.id&&t.db.events)try{await t.db.events.upsertByEntityId(a.id,{...a,id:a.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save event to database:",s)}return await E(t,"googlecalendar.events.update",{...n},"completed"),a},R=async(t,n)=>{let r=n.calendarId||"primary";if(await u(`/calendars/${r}/events/${n.id}`,t,{method:"DELETE",query:{sendUpdates:n.sendUpdates,sendNotifications:n.sendNotifications}}),t.db.events)try{await t.db.events.deleteByEntityId(n.id)}catch(a){console.warn("Failed to delete event from database:",a)}await E(t,"googlecalendar.events.delete",{...n},"completed")};import{z as e}from"zod";var f=e.object({date:e.string().optional().describe('All-day event date in "YYYY-MM-DD" format'),dateTime:e.string().optional().describe('RFC 3339 timestamp, e.g. "2024-12-25T10:00:00-07:00". Required for timed events.'),timeZone:e.string().optional().describe('IANA time zone name, e.g. "America/New_York"')}),N=e.object({id:e.string().optional(),email:e.string().optional().describe("Attendee's email address. Required when adding an attendee."),displayName:e.string().optional(),organizer:e.boolean().optional(),self:e.boolean().optional(),resource:e.boolean().optional(),optional:e.boolean().optional(),responseStatus:e.enum(["needsAction","declined","tentative","accepted"]).optional(),comment:e.string().optional(),additionalGuests:e.number().optional()}),M=e.object({id:e.string().optional(),email:e.string().optional(),displayName:e.string().optional(),self:e.boolean().optional()}),U=e.object({method:e.enum(["email","popup"]).optional(),minutes:e.number().optional()}),_=e.object({useDefault:e.boolean().optional().describe("Use the calendar default reminders"),overrides:e.array(U).optional().describe("Custom reminders. Only used when useDefault is false.")}),W=e.object({summary:e.string().optional().describe("Title of the event"),description:e.string().optional().describe("Description of the event. HTML is supported."),location:e.string().optional().describe("Geographic location of the event as free-form text"),start:f.optional().describe('Start time. Use "date" for all-day events, "dateTime" for timed events.'),end:f.optional().describe('End time. Use "date" for all-day events, "dateTime" for timed events.'),attendees:e.array(N).optional().describe("List of attendees. Each attendee must include an email."),recurrence:e.array(e.string()).optional().describe('RRULE / EXDATE lines per RFC 5545, e.g. ["RRULE:FREQ=WEEKLY;COUNT=5"]'),colorId:e.string().optional().describe("Color ID (1\u201311). Use the colors endpoint to see options."),transparency:e.enum(["opaque","transparent"]).optional().describe('"opaque" blocks time on the calendar (default); "transparent" does not'),visibility:e.enum(["default","public","private","confidential"]).optional(),eventType:e.enum(["default","outOfOffice","focusTime","workingLocation"]).optional(),status:e.enum(["confirmed","tentative","cancelled"]).optional(),reminders:_.optional(),guestsCanModify:e.boolean().optional(),guestsCanInviteOthers:e.boolean().optional(),guestsCanSeeOtherGuests:e.boolean().optional(),anyoneCanAddSelf:e.boolean().optional(),sequence:e.number().optional().describe("Sequence number for recurring event updates"),originalStartTime:f.optional().describe("Original start time for a recurring event instance"),recurringEventId:e.string().optional().describe("ID of the recurring event this instance belongs to")}),ae=e.object({calendarId:e.string().optional().describe('Calendar ID. Defaults to "primary".'),event:W.describe('Event body. Provide at minimum "summary", "start", and "end".'),sendUpdates:e.enum(["all","externalOnly","none"]).optional(),sendNotifications:e.boolean().optional(),conferenceDataVersion:e.number().optional(),maxAttendees:e.number().optional(),supportsAttachments:e.boolean().optional()}),re=e.object({calendarId:e.string().optional(),id:e.string(),timeZone:e.string().optional(),maxAttendees:e.number().optional()}),ie=e.object({calendarId:e.string().optional(),timeMin:e.string().optional(),timeMax:e.string().optional(),timeZone:e.string().optional(),updatedMin:e.string().optional(),singleEvents:e.boolean().optional(),maxResults:e.number().optional(),pageToken:e.string().optional(),q:e.string().optional(),orderBy:e.enum(["startTime","updated"]).optional(),iCalUID:e.string().optional(),showDeleted:e.boolean().optional(),showHiddenInvitations:e.boolean().optional()}),se=e.object({calendarId:e.string().optional().describe('Calendar ID. Defaults to "primary".'),id:e.string().describe("Event ID to update"),event:W.describe("Updated event fields"),sendUpdates:e.enum(["all","externalOnly","none"]).optional(),sendNotifications:e.boolean().optional(),conferenceDataVersion:e.number().optional(),maxAttendees:e.number().optional(),supportsAttachments:e.boolean().optional()}),le=e.object({calendarId:e.string().optional(),id:e.string(),sendUpdates:e.enum(["all","externalOnly","none"]).optional(),sendNotifications:e.boolean().optional()}),de=e.object({timeMin:e.string(),timeMax:e.string(),timeZone:e.string().optional(),groupExpansionMax:e.number().optional(),calendarExpansionMax:e.number().optional(),items:e.array(e.object({id:e.string()})).optional()}),m={eventsCreate:ae,eventsGet:re,eventsGetMany:ie,eventsUpdate:se,eventsDelete:le,calendarGetAvailability:de},C=e.object({id:e.string().optional(),status:e.enum(["confirmed","tentative","cancelled"]).optional(),htmlLink:e.string().optional(),created:e.string().optional(),updated:e.string().optional(),summary:e.string().optional(),description:e.string().optional(),location:e.string().optional(),colorId:e.string().optional(),creator:M.optional(),organizer:M.optional(),start:f.optional(),end:f.optional(),endTimeUnspecified:e.boolean().optional(),recurrence:e.array(e.string()).optional(),recurringEventId:e.string().optional(),originalStartTime:f.optional(),transparency:e.enum(["opaque","transparent"]).optional(),visibility:e.enum(["default","public","private","confidential"]).optional(),iCalUID:e.string().optional(),sequence:e.number().optional(),attendees:e.array(N).optional(),attendeesOmitted:e.boolean().optional(),hangoutLink:e.string().optional(),reminders:_.optional(),anyoneCanAddSelf:e.boolean().optional(),guestsCanInviteOthers:e.boolean().optional(),guestsCanModify:e.boolean().optional(),guestsCanSeeOtherGuests:e.boolean().optional(),privateCopy:e.boolean().optional(),locked:e.boolean().optional(),eventType:e.enum(["default","outOfOffice","focusTime","workingLocation"]).optional()}),pe=e.object({kind:e.string().optional(),etag:e.string().optional(),summary:e.string().optional(),description:e.string().optional(),updated:e.string().optional(),timeZone:e.string().optional(),accessRole:e.string().optional(),defaultReminders:e.array(U).optional(),nextPageToken:e.string().optional(),nextSyncToken:e.string().optional(),items:e.array(C).optional()}),ce=e.object({busy:e.array(e.object({start:e.string().optional(),end:e.string().optional()})).optional(),errors:e.array(e.object({domain:e.string().optional(),reason:e.string().optional()})).optional()}),ue=e.object({kind:e.string().optional(),calendars:e.record(e.string(),ce).optional(),groups:e.record(e.string(),e.object({calendars:e.array(e.string()).optional(),errors:e.array(e.object({domain:e.string().optional(),reason:e.string().optional()})).optional()})).optional(),timeMin:e.string().optional(),timeMax:e.string().optional()}),v={eventsCreate:C,eventsGet:C,eventsGetMany:pe,eventsUpdate:C,eventsDelete:e.void(),calendarGetAvailability:ue};var y={create:P,get:A,getMany:D,update:O,delete:R},j={getAvailability:x};import{z as o}from"zod";var S=o.object({date:o.string().optional(),dateTime:o.string().optional(),timeZone:o.string().optional()}),ge=o.object({id:o.string().optional(),email:o.string().optional(),displayName:o.string().optional(),organizer:o.boolean().optional(),self:o.boolean().optional(),resource:o.boolean().optional(),optional:o.boolean().optional(),responseStatus:o.enum(["needsAction","declined","tentative","accepted"]).optional(),comment:o.string().optional(),additionalGuests:o.number().optional()}),q=o.object({id:o.string().optional(),email:o.string().optional(),displayName:o.string().optional(),self:o.boolean().optional()}),me=o.object({method:o.enum(["email","popup"]).optional(),minutes:o.number().optional()}),ve=o.object({useDefault:o.boolean().optional(),overrides:o.array(me).optional()}),B=o.object({id:o.string(),status:o.enum(["confirmed","tentative","cancelled"]).optional(),htmlLink:o.string().optional(),created:o.string().optional(),updated:o.string().optional(),summary:o.string().optional(),description:o.string().optional(),location:o.string().optional(),colorId:o.string().optional(),creator:q.optional(),organizer:q.optional(),start:S.optional(),end:S.optional(),endTimeUnspecified:o.boolean().optional(),recurrence:o.array(o.string()).optional(),recurringEventId:o.string().optional(),originalStartTime:S.optional(),transparency:o.enum(["opaque","transparent"]).optional(),visibility:o.enum(["default","public","private","confidential"]).optional(),iCalUID:o.string().optional(),sequence:o.number().optional(),attendees:o.array(ge).optional(),attendeesOmitted:o.boolean().optional(),hangoutLink:o.string().optional(),reminders:ve.optional(),anyoneCanAddSelf:o.boolean().optional(),guestsCanInviteOthers:o.boolean().optional(),guestsCanModify:o.boolean().optional(),guestsCanSeeOtherGuests:o.boolean().optional(),privateCopy:o.boolean().optional(),locked:o.boolean().optional(),eventType:o.enum(["default","outOfOffice","focusTime","workingLocation"]).optional(),calendarId:o.string().optional(),createdAt:o.coerce.date().optional()}),L=o.object({id:o.string(),summary:o.string().optional(),description:o.string().optional(),location:o.string().optional(),timeZone:o.string().optional(),createdAt:o.coerce.date().optional()});var z={version:"1.0.0",entities:{events:B,calendars:L}};import{logEventFromContext as T}from"corsair/core";import{z as i}from"zod";var fe=i.object({data:i.string().optional(),attributes:i.record(i.string()).optional(),messageId:i.string().optional(),publishTime:i.string().optional()}),F=i.object({message:fe.optional(),subscription:i.string().optional(),event:i.unknown().optional()}),Ye=i.object({resourceId:i.string().optional(),resourceState:i.string().optional(),resourceUri:i.string().optional(),channelId:i.string().optional(),channelExpiration:i.string().optional(),channelToken:i.string().optional(),changed:i.string().optional()}),ye=i.object({type:i.literal("eventCreated"),calendarId:i.string(),event:i.custom(),timestamp:i.string()}),be=i.object({type:i.literal("eventUpdated"),calendarId:i.string(),event:i.custom(),timestamp:i.string()}),he=i.object({type:i.literal("eventDeleted"),calendarId:i.string(),eventId:i.string(),timestamp:i.string()}),K=i.union([ye,be,he]);function b(t){let n=Buffer.from(t,"base64").toString("utf-8");return JSON.parse(n)}function w(t){return n=>{let r=n.body;if(!r.message?.data)return!1;try{let a=b(r.message.data);return!!a.channelId&&!!a.resourceId&&!!a.resourceUri&&a.resourceUri.includes("/calendar/")}catch{return!1}}}var Ee=/\/calendars\/([^\/\?]+)/,Ce=/\/calendars\/[^\/]+\/events\/([^\/\?]+)/,Ge=120*1e3,ke=5e3;function Se(t){return{calendarId:t.match(Ee)?.[1],eventId:t.match(Ce)?.[1]}}function we(t){return!t.created||!t.updated?!1:Math.abs(new Date(t.updated).getTime()-new Date(t.created).getTime())<ke}function Te(t,n,r){return h(`/calendars/${n}/events/${r}`,t,{method:"GET"})}async function H(t,n){let r=new Date(Date.now()-Ge).toISOString();return(await h(`/calendars/${n}/events`,t,{method:"GET",query:{maxResults:10,orderBy:"updated",updatedMin:r,showDeleted:!0}})).items??[]}async function Ie(t,n,r){return r?Te(t,n,r):(await H(t,n)).at(-1)??null}async function xe(t,n,r,a){return r||((await H(t,n)).find(d=>d.status==="cancelled")?.id??a.resourceId??"")}async function $(t,n,r){r&&t.db.events&&await t.db.events.deleteByEntityId(r);let a={type:"eventDeleted",calendarId:n,eventId:r,timestamp:new Date().toISOString()};return await T(t,"googlecalendar.webhook.eventDeleted",{...a},"completed"),{eventData:a}}var V={match:w("eventChanged"),handler:async(t,n)=>{let r=n.payload;if(!r.message?.data)return{success:!1,error:"No message data in notification"};let a=b(r.message.data);if(!a.resourceUri)return{success:!1,error:"Invalid push notification format"};let{calendarId:s,eventId:p}=Se(a.resourceUri);if(!s)return{success:!1,error:"Could not parse calendar ID from resource URI"};let d=t.key;try{if(a.resourceState==="not_exists"){let g=await xe(d,s,p,a),{eventData:Y}=await $(t,s,g);return{success:!0,data:Y}}let l=await Ie(d,s,p);if(!l)return{success:!1,error:"No recently updated events found in calendar"};if(l.status==="cancelled"){let{eventData:g}=await $(t,s,l.id??"");return{success:!0,data:g}}let c="";if(l.id&&t.db.events&&(c=(await t.db.events.upsertByEntityId(l.id,{...l,id:l.id,calendarId:s,createdAt:new Date}))?.id??""),we(l)){let g={type:"eventCreated",calendarId:s,event:l,timestamp:new Date().toISOString()};return await T(t,"googlecalendar.webhook.eventCreated",{...g},"completed"),{success:!0,corsairEntityId:c,data:g}}let I={type:"eventUpdated",calendarId:s,event:l,timestamp:new Date().toISOString()};return await T(t,"googlecalendar.webhook.eventUpdated",{...I},"completed"),{success:!0,corsairEntityId:c,data:I}}catch(l){return console.error("Failed to process webhook:",l),{success:!1,error:`Failed to process event: ${l instanceof Error?l.message:"Unknown error"}`}}}};var Z={onEventChanged:V};var Pe={events:{create:y.create,get:y.get,getMany:y.getMany,update:y.update,delete:y.delete},calendar:{getAvailability:j.getAvailability}},Ae={"events.create":{input:m.eventsCreate,output:v.eventsCreate},"events.get":{input:m.eventsGet,output:v.eventsGet},"events.getMany":{input:m.eventsGetMany,output:v.eventsGetMany},"events.update":{input:m.eventsUpdate,output:v.eventsUpdate},"events.delete":{input:m.eventsDelete,output:v.eventsDelete},"calendar.getAvailability":{input:m.calendarGetAvailability,output:v.calendarGetAvailability}},De={onEventChanged:Z.onEventChanged},Oe={onEventChanged:{description:"A Google Calendar event was created, updated, or deleted",payload:F,response:K}},Re="oauth_2",Me={"events.create":{riskLevel:"write",description:"Create a new calendar event"},"events.get":{riskLevel:"read",description:"Get a specific calendar event"},"events.getMany":{riskLevel:"read",description:"List calendar events"},"events.update":{riskLevel:"write",description:"Update an existing calendar event"},"events.delete":{riskLevel:"destructive",description:"Delete a calendar event [DESTRUCTIVE]"},"calendar.getAvailability":{riskLevel:"read",description:"Get free/busy availability for a calendar"}};function ct(t={}){let n={...t,authType:t.authType??Re};return{id:"googlecalendar",schema:z,options:n,oauthConfig:{providerName:"Google",authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/calendar"],authParams:{access_type:"offline",prompt:"consent"}},hooks:n.hooks,webhookHooks:n.webhookHooks,endpoints:Pe,webhooks:De,endpointMeta:Me,endpointSchemas:Ae,webhookSchemas:Oe,keyBuilder:async r=>{if(n.key)return n.key;if(r.authType==="oauth_2"){let[a,s,p]=await Promise.all([r.keys.get_access_token(),r.keys.get_expires_at(),r.keys.get_refresh_token()]);if(!p)throw new Error("[corsair:googlecalendar] No refresh token. Cannot get access token.");let d=await r.keys.get_integration_credentials();if(!d.client_id||!d.client_secret)throw new Error("[corsair:googlecalendar] No client id or client secret");try{let l=await k({accessToken:a,expiresAt:s,refreshToken:p,clientId:d.client_id,clientSecret:d.client_secret});return l.refreshed&&await Promise.all([r.keys.set_access_token(l.accessToken),r.keys.set_expires_at(String(l.expiresAt))]),r._refreshAuth=async()=>{let c=await k({accessToken:null,expiresAt:null,refreshToken:p,clientId:d.client_id,clientSecret:d.client_secret,forceRefresh:!0});return await r.keys.set_access_token(c.accessToken),await r.keys.set_expires_at(String(c.expiresAt)),c.accessToken},l.accessToken}catch(l){throw console.error("[corsair:googlecalendar] Failed to get valid access token:",l),l}}return""},pluginWebhookMatcher:r=>{let a=r.headers;if(!(a.from==="noreply@google.com"||typeof a["user-agent"]=="string"&&a["user-agent"].includes("APIs-Google")))return!1;let p=r.body;if(!p?.message?.data)return!1;try{let d=b(p.message.data);return!!d.resourceUri&&d.resourceUri.includes("calendar")}catch{return!1}}}}export{w as createGoogleCalendarWebhookMatcher,b as decodePubSubMessage,ct as googlecalendar,Ae as googlecalendarEndpointSchemas};
1
+ import{request as J}from"corsair/http";var k=class extends Error{constructor(r,a){super(r);this.code=a;this.name="GoogleCalendarAPIError"}},Q="https://www.googleapis.com/calendar/v3";async function X(t,n,r){let a=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:t,client_secret:n,refresh_token:r,grant_type:"refresh_token"})});if(!a.ok){let c=await a.text();throw new k(`Failed to refresh access token: ${c}`,a.status)}return await a.json()}async function w({accessToken:t,expiresAt:n,clientId:r,clientSecret:a,refreshToken:s,forceRefresh:c=!1}){let d=Math.floor(Date.now()/1e3);if(!c&&t&&n&&Number(n)>d+300)return{accessToken:t,expiresAt:Number(n),refreshed:!1};let p=await X(r,a,s);return{accessToken:p.access_token,expiresAt:d+p.expires_in,refreshed:!0}}async function E(t,n,r={}){let{method:a="GET",body:s,query:c}=r;return await J({BASE:Q,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:n,HEADERS:{"Content-Type":"application/json"}},{method:a,url:t,body:a==="POST"||a==="PUT"||a==="PATCH"?s:void 0,mediaType:"application/json",query:c})}function ee(t){return t instanceof Error&&"status"in t&&t.status===401}async function g(t,n,r={}){try{return await E(t,n.key,r)}catch(a){if(ee(a)&&n._refreshAuth){let s=await n._refreshAuth();return await E(t,s,r)}throw a}}import{logEventFromContext as te}from"corsair/core";var I=async(t,n)=>{let r=await g("/freeBusy",t,{method:"POST",body:{timeMin:n.timeMin,timeMax:n.timeMax,timeZone:n.timeZone,groupExpansionMax:n.groupExpansionMax,calendarExpansionMax:n.calendarExpansionMax,items:n.items}});return await te(t,"googlecalendar.calendar.getAvailability",{...n},"completed"),r};import{logEventFromContext as C}from"corsair/core";var A=async(t,n)=>{let r=n.calendarId||"primary",a=await g(`/calendars/${r}/events`,t,{method:"POST",body:n.event});if(a.id&&t.db.events)try{await t.db.events.upsertByEntityId(a.id,{...a,id:a.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save event to database:",s)}return await C(t,"googlecalendar.events.create",{...n},"completed"),a},P=async(t,n)=>{let r=n.calendarId||"primary",a=await g(`/calendars/${r}/events/${n.id}`,t,{method:"GET",query:{timeZone:n.timeZone,maxAttendees:n.maxAttendees}});if(a.id&&t.db.events)try{await t.db.events.upsertByEntityId(a.id,{...a,id:a.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save event to database:",s)}return await C(t,"googlecalendar.events.get",{...n},"completed"),a},D=async(t,n)=>{let r=n.calendarId||"primary",a=await g(`/calendars/${r}/events`,t,{method:"GET",query:n});if(a.items&&t.db.events)try{for(let s of a.items)s.id&&await t.db.events.upsertByEntityId(s.id,{...s,id:s.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save events to database:",s)}return await C(t,"googlecalendar.events.getMany",{...n},"completed"),a},O=async(t,n)=>{let r=n.calendarId||"primary",a=await g(`/calendars/${r}/events/${n.id}`,t,{method:"PUT",body:n.event,query:{sendUpdates:n.sendUpdates,sendNotifications:n.sendNotifications,conferenceDataVersion:n.conferenceDataVersion,maxAttendees:n.maxAttendees,supportsAttachments:n.supportsAttachments}});if(a.id&&t.db.events)try{await t.db.events.upsertByEntityId(a.id,{...a,id:a.id,calendarId:r,createdAt:new Date})}catch(s){console.warn("Failed to save event to database:",s)}return await C(t,"googlecalendar.events.update",{...n},"completed"),a},M=async(t,n)=>{let r=n.calendarId||"primary";if(await g(`/calendars/${r}/events/${n.id}`,t,{method:"DELETE",query:{sendUpdates:n.sendUpdates,sendNotifications:n.sendNotifications}}),t.db.events)try{await t.db.events.deleteByEntityId(n.id)}catch(a){console.warn("Failed to delete event from database:",a)}await C(t,"googlecalendar.events.delete",{...n},"completed")};import{z as e}from"zod";var y=e.object({date:e.string().optional().describe('All-day event date in "YYYY-MM-DD" format'),dateTime:e.string().optional().describe('RFC 3339 timestamp, e.g. "2024-12-25T10:00:00-07:00". Required for timed events.'),timeZone:e.string().optional().describe('IANA time zone name, e.g. "America/New_York"')}),N=e.object({id:e.string().optional(),email:e.string().optional().describe("Attendee's email address. Required when adding an attendee."),displayName:e.string().optional(),organizer:e.boolean().optional(),self:e.boolean().optional(),resource:e.boolean().optional(),optional:e.boolean().optional(),responseStatus:e.enum(["needsAction","declined","tentative","accepted"]).optional(),comment:e.string().optional(),additionalGuests:e.number().optional()}),R=e.object({id:e.string().optional(),email:e.string().optional(),displayName:e.string().optional(),self:e.boolean().optional()}),U=e.object({method:e.enum(["email","popup"]).optional(),minutes:e.number().optional()}),_=e.object({useDefault:e.boolean().optional().describe("Use the calendar default reminders"),overrides:e.array(U).optional().describe("Custom reminders. Only used when useDefault is false.")}),W=e.object({summary:e.string().optional().describe("Title of the event"),description:e.string().optional().describe("Description of the event. HTML is supported."),location:e.string().optional().describe("Geographic location of the event as free-form text"),start:y.optional().describe('Start time. Use "date" for all-day events, "dateTime" for timed events.'),end:y.optional().describe('End time. Use "date" for all-day events, "dateTime" for timed events.'),attendees:e.array(N).optional().describe("List of attendees. Each attendee must include an email."),recurrence:e.array(e.string()).optional().describe('RRULE / EXDATE lines per RFC 5545, e.g. ["RRULE:FREQ=WEEKLY;COUNT=5"]'),colorId:e.string().optional().describe("Color ID (1\u201311). Use the colors endpoint to see options."),transparency:e.enum(["opaque","transparent"]).optional().describe('"opaque" blocks time on the calendar (default); "transparent" does not'),visibility:e.enum(["default","public","private","confidential"]).optional(),eventType:e.enum(["default","outOfOffice","focusTime","workingLocation"]).optional(),status:e.enum(["confirmed","tentative","cancelled"]).optional(),reminders:_.optional(),guestsCanModify:e.boolean().optional(),guestsCanInviteOthers:e.boolean().optional(),guestsCanSeeOtherGuests:e.boolean().optional(),anyoneCanAddSelf:e.boolean().optional(),sequence:e.number().optional().describe("Sequence number for recurring event updates"),originalStartTime:y.optional().describe("Original start time for a recurring event instance"),recurringEventId:e.string().optional().describe("ID of the recurring event this instance belongs to")}),ae=e.object({calendarId:e.string().optional().describe('Calendar ID. Defaults to "primary".'),event:W.describe('Event body. Provide at minimum "summary", "start", and "end".'),sendUpdates:e.enum(["all","externalOnly","none"]).optional(),sendNotifications:e.boolean().optional(),conferenceDataVersion:e.number().optional(),maxAttendees:e.number().optional(),supportsAttachments:e.boolean().optional()}),re=e.object({calendarId:e.string().optional(),id:e.string(),timeZone:e.string().optional(),maxAttendees:e.number().optional()}),ie=e.object({calendarId:e.string().optional(),timeMin:e.string().optional(),timeMax:e.string().optional(),timeZone:e.string().optional(),updatedMin:e.string().optional(),singleEvents:e.boolean().optional(),maxResults:e.number().optional(),pageToken:e.string().optional(),q:e.string().optional(),orderBy:e.enum(["startTime","updated"]).optional(),iCalUID:e.string().optional(),showDeleted:e.boolean().optional(),showHiddenInvitations:e.boolean().optional()}),se=e.object({calendarId:e.string().optional().describe('Calendar ID. Defaults to "primary".'),id:e.string().describe("Event ID to update"),event:W.describe("Updated event fields"),sendUpdates:e.enum(["all","externalOnly","none"]).optional(),sendNotifications:e.boolean().optional(),conferenceDataVersion:e.number().optional(),maxAttendees:e.number().optional(),supportsAttachments:e.boolean().optional()}),le=e.object({calendarId:e.string().optional(),id:e.string(),sendUpdates:e.enum(["all","externalOnly","none"]).optional(),sendNotifications:e.boolean().optional()}),de=e.object({timeMin:e.string(),timeMax:e.string(),timeZone:e.string().optional(),groupExpansionMax:e.number().optional(),calendarExpansionMax:e.number().optional(),items:e.array(e.object({id:e.string()})).optional()}),m={eventsCreate:ae,eventsGet:re,eventsGetMany:ie,eventsUpdate:se,eventsDelete:le,calendarGetAvailability:de},G=e.object({id:e.string().optional(),status:e.enum(["confirmed","tentative","cancelled"]).optional(),htmlLink:e.string().optional(),created:e.string().optional(),updated:e.string().optional(),summary:e.string().optional(),description:e.string().optional(),location:e.string().optional(),colorId:e.string().optional(),creator:R.optional(),organizer:R.optional(),start:y.optional(),end:y.optional(),endTimeUnspecified:e.boolean().optional(),recurrence:e.array(e.string()).optional(),recurringEventId:e.string().optional(),originalStartTime:y.optional(),transparency:e.enum(["opaque","transparent"]).optional(),visibility:e.enum(["default","public","private","confidential"]).optional(),iCalUID:e.string().optional(),sequence:e.number().optional(),attendees:e.array(N).optional(),attendeesOmitted:e.boolean().optional(),hangoutLink:e.string().optional(),reminders:_.optional(),anyoneCanAddSelf:e.boolean().optional(),guestsCanInviteOthers:e.boolean().optional(),guestsCanModify:e.boolean().optional(),guestsCanSeeOtherGuests:e.boolean().optional(),privateCopy:e.boolean().optional(),locked:e.boolean().optional(),eventType:e.enum(["default","outOfOffice","focusTime","workingLocation"]).optional()}),pe=e.object({kind:e.string().optional(),etag:e.string().optional(),summary:e.string().optional(),description:e.string().optional(),updated:e.string().optional(),timeZone:e.string().optional(),accessRole:e.string().optional(),defaultReminders:e.array(U).optional(),nextPageToken:e.string().optional(),nextSyncToken:e.string().optional(),items:e.array(G).optional()}),ce=e.object({busy:e.array(e.object({start:e.string().optional(),end:e.string().optional()})).optional(),errors:e.array(e.object({domain:e.string().optional(),reason:e.string().optional()})).optional()}),ge=e.object({kind:e.string().optional(),calendars:e.record(e.string(),ce).optional(),groups:e.record(e.string(),e.object({calendars:e.array(e.string()).optional(),errors:e.array(e.object({domain:e.string().optional(),reason:e.string().optional()})).optional()})).optional(),timeMin:e.string().optional(),timeMax:e.string().optional()}),v={eventsCreate:G,eventsGet:G,eventsGetMany:pe,eventsUpdate:G,eventsDelete:e.void(),calendarGetAvailability:ge};var b={create:A,get:P,getMany:D,update:O,delete:M},j={getAvailability:I};import{z as o}from"zod";var S=o.object({date:o.string().optional(),dateTime:o.string().optional(),timeZone:o.string().optional()}),ue=o.object({id:o.string().optional(),email:o.string().optional(),displayName:o.string().optional(),organizer:o.boolean().optional(),self:o.boolean().optional(),resource:o.boolean().optional(),optional:o.boolean().optional(),responseStatus:o.enum(["needsAction","declined","tentative","accepted"]).optional(),comment:o.string().optional(),additionalGuests:o.number().optional()}),q=o.object({id:o.string().optional(),email:o.string().optional(),displayName:o.string().optional(),self:o.boolean().optional()}),me=o.object({method:o.enum(["email","popup"]).optional(),minutes:o.number().optional()}),ve=o.object({useDefault:o.boolean().optional(),overrides:o.array(me).optional()}),B=o.object({id:o.string(),status:o.enum(["confirmed","tentative","cancelled"]).optional(),htmlLink:o.string().optional(),created:o.string().optional(),updated:o.string().optional(),summary:o.string().optional(),description:o.string().optional(),location:o.string().optional(),colorId:o.string().optional(),creator:q.optional(),organizer:q.optional(),start:S.optional(),end:S.optional(),endTimeUnspecified:o.boolean().optional(),recurrence:o.array(o.string()).optional(),recurringEventId:o.string().optional(),originalStartTime:S.optional(),transparency:o.enum(["opaque","transparent"]).optional(),visibility:o.enum(["default","public","private","confidential"]).optional(),iCalUID:o.string().optional(),sequence:o.number().optional(),attendees:o.array(ue).optional(),attendeesOmitted:o.boolean().optional(),hangoutLink:o.string().optional(),reminders:ve.optional(),anyoneCanAddSelf:o.boolean().optional(),guestsCanInviteOthers:o.boolean().optional(),guestsCanModify:o.boolean().optional(),guestsCanSeeOtherGuests:o.boolean().optional(),privateCopy:o.boolean().optional(),locked:o.boolean().optional(),eventType:o.enum(["default","outOfOffice","focusTime","workingLocation"]).optional(),calendarId:o.string().optional(),createdAt:o.coerce.date().optional()}),L=o.object({id:o.string(),summary:o.string().optional(),description:o.string().optional(),location:o.string().optional(),timeZone:o.string().optional(),createdAt:o.coerce.date().optional()});var z={version:"1.0.0",entities:{events:B,calendars:L}};import{logEventFromContext as x}from"corsair/core";import{z as i}from"zod";var fe=i.object({data:i.string().optional(),attributes:i.record(i.string()).optional(),messageId:i.string().optional(),publishTime:i.string().optional()}),F=i.object({message:fe.optional(),subscription:i.string().optional(),event:i.unknown().optional()}),Ye=i.object({resourceId:i.string().optional(),resourceState:i.string().optional(),resourceUri:i.string().optional(),channelId:i.string().optional(),channelExpiration:i.string().optional(),channelToken:i.string().optional(),changed:i.string().optional()}),ye=i.object({type:i.literal("eventCreated"),calendarId:i.string(),event:i.custom(),timestamp:i.string()}),be=i.object({type:i.literal("eventUpdated"),calendarId:i.string(),event:i.custom(),timestamp:i.string()}),he=i.object({type:i.literal("eventDeleted"),calendarId:i.string(),eventId:i.string(),timestamp:i.string()}),$=i.union([ye,be,he]);function h(t){let n=Buffer.from(t,"base64").toString("utf-8");return JSON.parse(n)}function T(t){return n=>{let r=n.body;if(!r.message?.data)return!1;try{let a=h(r.message.data);return!!a.channelId&&!!a.resourceId&&!!a.resourceUri&&a.resourceUri.includes("/calendar/")}catch{return!1}}}var Ee=/\/calendars\/([^\/\?]+)/,Ce=/\/calendars\/[^\/]+\/events\/([^\/\?]+)/,Ge=120*1e3,ke=5e3;function we(t){return{calendarId:t.match(Ee)?.[1],eventId:t.match(Ce)?.[1]}}function Se(t){return!t.created||!t.updated?!1:Math.abs(new Date(t.updated).getTime()-new Date(t.created).getTime())<ke}function Te(t,n,r){return E(`/calendars/${n}/events/${r}`,t,{method:"GET"})}async function H(t,n){let r=new Date(Date.now()-Ge).toISOString();return(await E(`/calendars/${n}/events`,t,{method:"GET",query:{maxResults:10,orderBy:"updated",updatedMin:r,showDeleted:!0}})).items??[]}async function xe(t,n,r){return r?Te(t,n,r):(await H(t,n)).at(-1)??null}async function Ie(t,n,r,a){return r||((await H(t,n)).find(d=>d.status==="cancelled")?.id??a.resourceId??"")}async function K(t,n,r){r&&t.db.events&&await t.db.events.deleteByEntityId(r);let a={type:"eventDeleted",calendarId:n,eventId:r,timestamp:new Date().toISOString()};return await x(t,"googlecalendar.webhook.eventDeleted",{...a},"completed"),{eventData:a}}var V={match:T("eventChanged"),handler:async(t,n)=>{let r=n.payload;if(!r.message?.data)return{success:!1,error:"No message data in notification"};let a=h(r.message.data);if(!a.resourceUri)return{success:!1,error:"Invalid push notification format"};let{calendarId:s,eventId:c}=we(a.resourceUri);if(!s)return{success:!1,error:"Could not parse calendar ID from resource URI"};let d=t.key;try{if(a.resourceState==="not_exists"){let u=await Ie(d,s,c,a),{eventData:Y}=await K(t,s,u);return{success:!0,data:Y}}let l=await xe(d,s,c);if(!l)return{success:!1,error:"No recently updated events found in calendar"};if(l.status==="cancelled"){let{eventData:u}=await K(t,s,l.id??"");return{success:!0,data:u}}let p="";if(l.id&&t.db.events&&(p=(await t.db.events.upsertByEntityId(l.id,{...l,id:l.id,calendarId:s,createdAt:new Date}))?.id??""),Se(l)){let u={type:"eventCreated",calendarId:s,event:l,timestamp:new Date().toISOString()};return await x(t,"googlecalendar.webhook.eventCreated",{...u},"completed"),{success:!0,corsairEntityId:p,data:u}}let f={type:"eventUpdated",calendarId:s,event:l,timestamp:new Date().toISOString()};return await x(t,"googlecalendar.webhook.eventUpdated",{...f},"completed"),{success:!0,corsairEntityId:p,data:f}}catch(l){return console.error("Failed to process webhook:",l),{success:!1,error:`Failed to process event: ${l instanceof Error?l.message:"Unknown error"}`}}}};var Z={onEventChanged:V};var Ae={events:{create:b.create,get:b.get,getMany:b.getMany,update:b.update,delete:b.delete},calendar:{getAvailability:j.getAvailability}},Pe={"events.create":{input:m.eventsCreate,output:v.eventsCreate},"events.get":{input:m.eventsGet,output:v.eventsGet},"events.getMany":{input:m.eventsGetMany,output:v.eventsGetMany},"events.update":{input:m.eventsUpdate,output:v.eventsUpdate},"events.delete":{input:m.eventsDelete,output:v.eventsDelete},"calendar.getAvailability":{input:m.calendarGetAvailability,output:v.calendarGetAvailability}},De={onEventChanged:Z.onEventChanged},Oe={onEventChanged:{description:"A Google Calendar event was created, updated, or deleted",payload:F,response:$}},Me="oauth_2",Re={"events.create":{riskLevel:"write",description:"Create a new calendar event"},"events.get":{riskLevel:"read",description:"Get a specific calendar event"},"events.getMany":{riskLevel:"read",description:"List calendar events"},"events.update":{riskLevel:"write",description:"Update an existing calendar event"},"events.delete":{riskLevel:"destructive",description:"Delete a calendar event [DESTRUCTIVE]"},"calendar.getAvailability":{riskLevel:"read",description:"Get free/busy availability for a calendar"}};function ct(t={}){let n={...t,authType:t.authType??Me};return{id:"googlecalendar",schema:z,options:n,oauthConfig:{providerName:"Google",authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:["https://www.googleapis.com/auth/calendar"],authParams:{access_type:"offline",prompt:"consent"}},hooks:n.hooks,webhookHooks:n.webhookHooks,endpoints:Ae,webhooks:De,endpointMeta:Re,endpointSchemas:Pe,webhookSchemas:Oe,keyBuilder:async r=>{let a=r.authType;if(n.key)return n.key;if(r.authType==="oauth_2"){let[s,c,d]=await Promise.all([r.keys.get_access_token(),r.keys.get_expires_at(),r.keys.get_refresh_token()]);if(!d)throw new Error("[auth-missing:googlecalendar:refresh_token]: Google Calendar refresh token is missing");let l=await r.keys.get_integration_credentials();if(!l.client_id||!l.client_secret)throw new Error("[corsair:googlecalendar] No client id or client secret");try{let p=await w({accessToken:s,expiresAt:c,refreshToken:d,clientId:l.client_id,clientSecret:l.client_secret});return p.refreshed&&await Promise.all([r.keys.set_access_token(p.accessToken),r.keys.set_expires_at(String(p.expiresAt))]),r._refreshAuth=async()=>{let f=await w({accessToken:null,expiresAt:null,refreshToken:d,clientId:l.client_id,clientSecret:l.client_secret,forceRefresh:!0});return await r.keys.set_access_token(f.accessToken),await r.keys.set_expires_at(String(f.expiresAt)),f.accessToken},p.accessToken}catch(p){throw console.error("[corsair:googlecalendar] Failed to get valid access token:",p),p}}throw new Error(`[auth-missing:googlecalendar:${a}]: Google Calendar key is missing`)},pluginWebhookMatcher:r=>{let a=r.headers;if(!(a.from==="noreply@google.com"||typeof a["user-agent"]=="string"&&a["user-agent"].includes("APIs-Google")))return!1;let c=r.body;if(!c?.message?.data)return!1;try{let d=h(c.message.data);return!!d.resourceUri&&d.resourceUri.includes("calendar")}catch{return!1}}}}export{T as createGoogleCalendarWebhookMatcher,h as decodePubSubMessage,ct as googlecalendar,Pe as googlecalendarEndpointSchemas};
@@ -0,0 +1,2 @@
1
+ import 'dotenv/config';
2
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC"}
@@ -15,13 +15,13 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
15
15
  displayName: z.ZodOptional<z.ZodString>;
16
16
  self: z.ZodOptional<z.ZodBoolean>;
17
17
  }, "strip", z.ZodTypeAny, {
18
- id?: string | undefined;
19
18
  email?: string | undefined;
19
+ id?: string | undefined;
20
20
  displayName?: string | undefined;
21
21
  self?: boolean | undefined;
22
22
  }, {
23
- id?: string | undefined;
24
23
  email?: string | undefined;
24
+ id?: string | undefined;
25
25
  displayName?: string | undefined;
26
26
  self?: boolean | undefined;
27
27
  }>>;
@@ -31,13 +31,13 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
31
31
  displayName: z.ZodOptional<z.ZodString>;
32
32
  self: z.ZodOptional<z.ZodBoolean>;
33
33
  }, "strip", z.ZodTypeAny, {
34
- id?: string | undefined;
35
34
  email?: string | undefined;
35
+ id?: string | undefined;
36
36
  displayName?: string | undefined;
37
37
  self?: boolean | undefined;
38
38
  }, {
39
- id?: string | undefined;
40
39
  email?: string | undefined;
40
+ id?: string | undefined;
41
41
  displayName?: string | undefined;
42
42
  self?: boolean | undefined;
43
43
  }>>;
@@ -99,8 +99,8 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
99
99
  comment: z.ZodOptional<z.ZodString>;
100
100
  additionalGuests: z.ZodOptional<z.ZodNumber>;
101
101
  }, "strip", z.ZodTypeAny, {
102
- id?: string | undefined;
103
102
  email?: string | undefined;
103
+ id?: string | undefined;
104
104
  displayName?: string | undefined;
105
105
  organizer?: boolean | undefined;
106
106
  self?: boolean | undefined;
@@ -110,8 +110,8 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
110
110
  comment?: string | undefined;
111
111
  additionalGuests?: number | undefined;
112
112
  }, {
113
- id?: string | undefined;
114
113
  email?: string | undefined;
114
+ id?: string | undefined;
115
115
  displayName?: string | undefined;
116
116
  organizer?: boolean | undefined;
117
117
  self?: boolean | undefined;
@@ -161,6 +161,14 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
161
161
  id: string;
162
162
  location?: string | undefined;
163
163
  status?: "tentative" | "confirmed" | "cancelled" | undefined;
164
+ organizer?: {
165
+ email?: string | undefined;
166
+ id?: string | undefined;
167
+ displayName?: string | undefined;
168
+ self?: boolean | undefined;
169
+ } | undefined;
170
+ summary?: string | undefined;
171
+ description?: string | undefined;
164
172
  start?: {
165
173
  date?: string | undefined;
166
174
  dateTime?: string | undefined;
@@ -171,17 +179,9 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
171
179
  dateTime?: string | undefined;
172
180
  timeZone?: string | undefined;
173
181
  } | undefined;
174
- description?: string | undefined;
175
- organizer?: {
176
- id?: string | undefined;
177
- email?: string | undefined;
178
- displayName?: string | undefined;
179
- self?: boolean | undefined;
180
- } | undefined;
181
- summary?: string | undefined;
182
182
  attendees?: {
183
- id?: string | undefined;
184
183
  email?: string | undefined;
184
+ id?: string | undefined;
185
185
  displayName?: string | undefined;
186
186
  organizer?: boolean | undefined;
187
187
  self?: boolean | undefined;
@@ -220,8 +220,8 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
220
220
  htmlLink?: string | undefined;
221
221
  created?: string | undefined;
222
222
  creator?: {
223
- id?: string | undefined;
224
223
  email?: string | undefined;
224
+ id?: string | undefined;
225
225
  displayName?: string | undefined;
226
226
  self?: boolean | undefined;
227
227
  } | undefined;
@@ -235,6 +235,14 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
235
235
  id: string;
236
236
  location?: string | undefined;
237
237
  status?: "tentative" | "confirmed" | "cancelled" | undefined;
238
+ organizer?: {
239
+ email?: string | undefined;
240
+ id?: string | undefined;
241
+ displayName?: string | undefined;
242
+ self?: boolean | undefined;
243
+ } | undefined;
244
+ summary?: string | undefined;
245
+ description?: string | undefined;
238
246
  start?: {
239
247
  date?: string | undefined;
240
248
  dateTime?: string | undefined;
@@ -245,17 +253,9 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
245
253
  dateTime?: string | undefined;
246
254
  timeZone?: string | undefined;
247
255
  } | undefined;
248
- description?: string | undefined;
249
- organizer?: {
250
- id?: string | undefined;
251
- email?: string | undefined;
252
- displayName?: string | undefined;
253
- self?: boolean | undefined;
254
- } | undefined;
255
- summary?: string | undefined;
256
256
  attendees?: {
257
- id?: string | undefined;
258
257
  email?: string | undefined;
258
+ id?: string | undefined;
259
259
  displayName?: string | undefined;
260
260
  organizer?: boolean | undefined;
261
261
  self?: boolean | undefined;
@@ -294,8 +294,8 @@ export declare const GoogleCalendarEvent: z.ZodObject<{
294
294
  htmlLink?: string | undefined;
295
295
  created?: string | undefined;
296
296
  creator?: {
297
- id?: string | undefined;
298
297
  email?: string | undefined;
298
+ id?: string | undefined;
299
299
  displayName?: string | undefined;
300
300
  self?: boolean | undefined;
301
301
  } | undefined;
@@ -316,16 +316,16 @@ export declare const GoogleCalendar: z.ZodObject<{
316
316
  }, "strip", z.ZodTypeAny, {
317
317
  id: string;
318
318
  location?: string | undefined;
319
- description?: string | undefined;
320
319
  timeZone?: string | undefined;
321
320
  summary?: string | undefined;
321
+ description?: string | undefined;
322
322
  createdAt?: Date | undefined;
323
323
  }, {
324
324
  id: string;
325
325
  location?: string | undefined;
326
- description?: string | undefined;
327
326
  timeZone?: string | undefined;
328
327
  summary?: string | undefined;
328
+ description?: string | undefined;
329
329
  createdAt?: Date | undefined;
330
330
  }>;
331
331
  export type GoogleCalendarEvent = z.infer<typeof GoogleCalendarEvent>;
@@ -17,13 +17,13 @@ export declare const GoogleCalendarSchema: {
17
17
  displayName: import("zod").ZodOptional<import("zod").ZodString>;
18
18
  self: import("zod").ZodOptional<import("zod").ZodBoolean>;
19
19
  }, "strip", import("zod").ZodTypeAny, {
20
- id?: string | undefined;
21
20
  email?: string | undefined;
21
+ id?: string | undefined;
22
22
  displayName?: string | undefined;
23
23
  self?: boolean | undefined;
24
24
  }, {
25
- id?: string | undefined;
26
25
  email?: string | undefined;
26
+ id?: string | undefined;
27
27
  displayName?: string | undefined;
28
28
  self?: boolean | undefined;
29
29
  }>>;
@@ -33,13 +33,13 @@ export declare const GoogleCalendarSchema: {
33
33
  displayName: import("zod").ZodOptional<import("zod").ZodString>;
34
34
  self: import("zod").ZodOptional<import("zod").ZodBoolean>;
35
35
  }, "strip", import("zod").ZodTypeAny, {
36
- id?: string | undefined;
37
36
  email?: string | undefined;
37
+ id?: string | undefined;
38
38
  displayName?: string | undefined;
39
39
  self?: boolean | undefined;
40
40
  }, {
41
- id?: string | undefined;
42
41
  email?: string | undefined;
42
+ id?: string | undefined;
43
43
  displayName?: string | undefined;
44
44
  self?: boolean | undefined;
45
45
  }>>;
@@ -101,8 +101,8 @@ export declare const GoogleCalendarSchema: {
101
101
  comment: import("zod").ZodOptional<import("zod").ZodString>;
102
102
  additionalGuests: import("zod").ZodOptional<import("zod").ZodNumber>;
103
103
  }, "strip", import("zod").ZodTypeAny, {
104
- id?: string | undefined;
105
104
  email?: string | undefined;
105
+ id?: string | undefined;
106
106
  displayName?: string | undefined;
107
107
  organizer?: boolean | undefined;
108
108
  self?: boolean | undefined;
@@ -112,8 +112,8 @@ export declare const GoogleCalendarSchema: {
112
112
  comment?: string | undefined;
113
113
  additionalGuests?: number | undefined;
114
114
  }, {
115
- id?: string | undefined;
116
115
  email?: string | undefined;
116
+ id?: string | undefined;
117
117
  displayName?: string | undefined;
118
118
  organizer?: boolean | undefined;
119
119
  self?: boolean | undefined;
@@ -163,6 +163,14 @@ export declare const GoogleCalendarSchema: {
163
163
  id: string;
164
164
  location?: string | undefined;
165
165
  status?: "tentative" | "confirmed" | "cancelled" | undefined;
166
+ organizer?: {
167
+ email?: string | undefined;
168
+ id?: string | undefined;
169
+ displayName?: string | undefined;
170
+ self?: boolean | undefined;
171
+ } | undefined;
172
+ summary?: string | undefined;
173
+ description?: string | undefined;
166
174
  start?: {
167
175
  date?: string | undefined;
168
176
  dateTime?: string | undefined;
@@ -173,17 +181,9 @@ export declare const GoogleCalendarSchema: {
173
181
  dateTime?: string | undefined;
174
182
  timeZone?: string | undefined;
175
183
  } | undefined;
176
- description?: string | undefined;
177
- organizer?: {
178
- id?: string | undefined;
179
- email?: string | undefined;
180
- displayName?: string | undefined;
181
- self?: boolean | undefined;
182
- } | undefined;
183
- summary?: string | undefined;
184
184
  attendees?: {
185
- id?: string | undefined;
186
185
  email?: string | undefined;
186
+ id?: string | undefined;
187
187
  displayName?: string | undefined;
188
188
  organizer?: boolean | undefined;
189
189
  self?: boolean | undefined;
@@ -222,8 +222,8 @@ export declare const GoogleCalendarSchema: {
222
222
  htmlLink?: string | undefined;
223
223
  created?: string | undefined;
224
224
  creator?: {
225
- id?: string | undefined;
226
225
  email?: string | undefined;
226
+ id?: string | undefined;
227
227
  displayName?: string | undefined;
228
228
  self?: boolean | undefined;
229
229
  } | undefined;
@@ -237,6 +237,14 @@ export declare const GoogleCalendarSchema: {
237
237
  id: string;
238
238
  location?: string | undefined;
239
239
  status?: "tentative" | "confirmed" | "cancelled" | undefined;
240
+ organizer?: {
241
+ email?: string | undefined;
242
+ id?: string | undefined;
243
+ displayName?: string | undefined;
244
+ self?: boolean | undefined;
245
+ } | undefined;
246
+ summary?: string | undefined;
247
+ description?: string | undefined;
240
248
  start?: {
241
249
  date?: string | undefined;
242
250
  dateTime?: string | undefined;
@@ -247,17 +255,9 @@ export declare const GoogleCalendarSchema: {
247
255
  dateTime?: string | undefined;
248
256
  timeZone?: string | undefined;
249
257
  } | undefined;
250
- description?: string | undefined;
251
- organizer?: {
252
- id?: string | undefined;
253
- email?: string | undefined;
254
- displayName?: string | undefined;
255
- self?: boolean | undefined;
256
- } | undefined;
257
- summary?: string | undefined;
258
258
  attendees?: {
259
- id?: string | undefined;
260
259
  email?: string | undefined;
260
+ id?: string | undefined;
261
261
  displayName?: string | undefined;
262
262
  organizer?: boolean | undefined;
263
263
  self?: boolean | undefined;
@@ -296,8 +296,8 @@ export declare const GoogleCalendarSchema: {
296
296
  htmlLink?: string | undefined;
297
297
  created?: string | undefined;
298
298
  creator?: {
299
- id?: string | undefined;
300
299
  email?: string | undefined;
300
+ id?: string | undefined;
301
301
  displayName?: string | undefined;
302
302
  self?: boolean | undefined;
303
303
  } | undefined;
@@ -318,16 +318,16 @@ export declare const GoogleCalendarSchema: {
318
318
  }, "strip", import("zod").ZodTypeAny, {
319
319
  id: string;
320
320
  location?: string | undefined;
321
- description?: string | undefined;
322
321
  timeZone?: string | undefined;
323
322
  summary?: string | undefined;
323
+ description?: string | undefined;
324
324
  createdAt?: Date | undefined;
325
325
  }, {
326
326
  id: string;
327
327
  location?: string | undefined;
328
- description?: string | undefined;
329
328
  timeZone?: string | undefined;
330
329
  summary?: string | undefined;
330
+ description?: string | undefined;
331
331
  createdAt?: Date | undefined;
332
332
  }>;
333
333
  };
@@ -1,3 +1,3 @@
1
- import type { GoogleCalendarWebhooks } from '..';
1
+ import type { GoogleCalendarWebhooks } from '../index';
2
2
  export declare const onEventChanged: GoogleCalendarWebhooks['onEventChanged'];
3
3
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../webhooks/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,IAAI,CAAC;AA2HjD,eAAO,MAAM,cAAc,EAAE,sBAAsB,CAAC,gBAAgB,CAiHnE,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../webhooks/events.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AA0HvD,eAAO,MAAM,cAAc,EAAE,sBAAsB,CAAC,gBAAgB,CAiHnE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
1
  import type { CorsairWebhookMatcher } from 'corsair/core';
2
+ import { z } from 'zod';
3
3
  import type { Event } from '../types';
4
4
  export declare const PubSubMessageSchema: z.ZodObject<{
5
5
  data: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACX,qBAAqB,EAErB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAMtC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAInC,CAAC;AACH,MAAM,MAAM,kBAAkB,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CACtD,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,EACxC,OAAO,CACP,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;EAQ/C,CAAC;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CACnD,OAAO,oCAAoC,CAC3C,CAAC;AAMF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAI3C,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,gCAAgC,CACvC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACtC,YAAY,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;CACxE;AAED,MAAM,MAAM,4BAA4B,CAAC,MAAM,GAAG,OAAO,IACxD,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE5B,MAAM,MAAM,4BAA4B,GAAG;IAC1C,YAAY,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;CACxE,CAAC;AAMF,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,MAAM,GACV,8BAA8B,CAGhC;AAED,wBAAgB,kCAAkC,CACjD,SAAS,EAAE,uBAAuB,GAChC,qBAAqB,CAoBvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAqB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAMtC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAInC,CAAC;AACH,MAAM,MAAM,kBAAkB,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CACtD,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,EACxC,OAAO,CACP,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;EAQ/C,CAAC;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CACnD,OAAO,oCAAoC,CAC3C,CAAC;AAMF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAI3C,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,gCAAgC,CACvC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACtC,YAAY,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;CACxE;AAED,MAAM,MAAM,4BAA4B,CAAC,MAAM,GAAG,OAAO,IACxD,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE5B,MAAM,MAAM,4BAA4B,GAAG;IAC1C,YAAY,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;CACxE,CAAC;AAMF,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,MAAM,GACV,8BAA8B,CAGhC;AAED,wBAAgB,kCAAkC,CACjD,SAAS,EAAE,uBAAuB,GAChC,qBAAqB,CAoBvB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@corsair-dev/googlecalendar",
3
- "version": "0.1.0",
4
- "description": "Googlecalendar plugin for Corsair",
3
+ "version": "0.1.1",
4
+ "description": "Google calendar plugin for Corsair",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -11,6 +11,10 @@
11
11
  "dev-source": "./index.ts",
12
12
  "types": "./dist/index.d.ts",
13
13
  "default": "./dist/index.js"
14
+ },
15
+ "./types": {
16
+ "dev-source": "./types.ts",
17
+ "types": "./dist/types.d.ts"
14
18
  }
15
19
  },
16
20
  "peerDependencies": {
@@ -18,10 +22,12 @@
18
22
  "zod": "^3.0.0"
19
23
  },
20
24
  "devDependencies": {
25
+ "@types/jest": "^29.5.14",
26
+ "ts-jest": "^29.4.9",
21
27
  "tsup": "^8.0.1",
22
28
  "typescript": "^5.9.3",
23
29
  "zod": "^3.25.76",
24
- "corsair": "0.1.48"
30
+ "corsair": "0.1.67"
25
31
  },
26
32
  "keywords": [
27
33
  "corsair",
@@ -33,8 +39,12 @@
33
39
  "files": [
34
40
  "dist"
35
41
  ],
42
+ "dependencies": {
43
+ "jest": "^29.7.0"
44
+ },
36
45
  "scripts": {
37
46
  "build": "rm -rf dist && tsc --build --force && tsup",
38
- "typecheck": "tsc --noEmit"
47
+ "typecheck": "tsc --noEmit",
48
+ "test": "jest"
39
49
  }
40
50
  }