@corsair-dev/airtable 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 +10 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/endpoints/bases.d.ts +4 -0
- package/dist/endpoints/bases.d.ts.map +1 -0
- package/dist/endpoints/index.d.ts +323 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/records.d.ts +8 -0
- package/dist/endpoints/records.d.ts.map +1 -0
- package/dist/endpoints/types.d.ts +1615 -0
- package/dist/endpoints/types.d.ts.map +1 -0
- package/dist/endpoints/webhook-payloads.d.ts +12 -0
- package/dist/endpoints/webhook-payloads.d.ts.map +1 -0
- package/dist/error-handlers.d.ts +40 -0
- package/dist/error-handlers.d.ts.map +1 -0
- package/dist/index.d.ts +930 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/schema/database.d.ts +36 -0
- package/dist/schema/database.d.ts.map +1 -0
- package/dist/schema/index.d.ts +38 -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/webhooks/event.d.ts +3 -0
- package/dist/webhooks/event.d.ts.map +1 -0
- package/dist/webhooks/index.d.ts +44 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/types.d.ts +626 -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{logEventFromContext as w}from"corsair/core";import{request as J}from"corsair/http";var R=class extends Error{constructor(o,a){super(o);this.code=a;this.name="AirtableAPIError"}},Z="https://api.airtable.com/v0";async function c(r,t,o={}){let{method:a="GET",body:n,query:i}=o,h={BASE:Z,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:t,HEADERS:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}},d={method:a,url:r,body:a==="POST"||a==="PUT"||a==="PATCH"?n:void 0,mediaType:"application/json; charset=utf-8",query:a==="GET"||a==="DELETE"?i:void 0};try{return await J(h,d)}catch(l){throw l instanceof Error?new R(l.message):new R("Unknown error")}}var O=async(r,t)=>{let o=await c("meta/bases",r.key,{method:"GET",query:{offset:t.offset}});if(o.bases&&r.db.bases)try{for(let a of o.bases)await r.db.bases.upsertByEntityId(a.id,{...a})}catch(a){console.warn("Failed to save bases to database:",a)}return await w(r,"airtable.bases.getMany",{...t},"completed"),o},x=async(r,t)=>{let o=await c(`meta/bases/${t.baseId}/tables`,r.key,{method:"GET",query:{include:t.include?.join(",")}});return await w(r,"airtable.bases.getSchema",{...t},"completed"),o};import{logEventFromContext as f}from"corsair/core";var C=async(r,t)=>{let o=await c(`${t.baseId}/${t.tableIdOrName}`,r.key,{method:"POST",body:{records:[{fields:t.fields}],typecast:t.typecast}});if(o.records&&r.db.records)try{for(let a of o.records)await r.db.records.upsertByEntityId(a.id,{...a,baseId:t.baseId,tableId:t.tableIdOrName})}catch(a){console.warn("Failed to save records to database:",a)}return await f(r,"airtable.records.create",{...t},"completed"),o},B=async(r,t)=>{let o=await c(`${t.baseId}/${t.tableIdOrName}`,r.key,{method:"PATCH",body:{records:[{fields:t.fields}],performUpsert:{fieldsToMergeOn:t.fieldsToMergeOn},typecast:t.typecast}});if(o.records&&r.db.records)try{for(let a of o.records)await r.db.records.upsertByEntityId(a.id,{...a,baseId:t.baseId,tableId:t.tableIdOrName})}catch(a){console.warn("Failed to save records to database:",a)}return await f(r,"airtable.records.createOrUpdate",{...t},"completed"),o},P=async(r,t)=>{let o=await c(`${t.baseId}/${t.tableIdOrName}/${t.recordId}`,r.key,{method:"DELETE"});if(r.db.records&&o.deleted&&o.id)try{await r.db.records.deleteByEntityId(o.id)}catch(a){console.warn("Failed to delete records from database:",a)}return await f(r,"airtable.records.delete",{...t},"completed"),o},v=async(r,t)=>{let o=await c(`${t.baseId}/${t.tableIdOrName}/${t.recordId}`,r.key,{method:"GET",query:{returnFieldsByFieldId:t.returnFieldsByFieldId}});if(r.db.records)try{await r.db.records.upsertByEntityId(o.id,{...o,baseId:t.baseId,tableId:t.tableIdOrName})}catch(a){console.warn("Failed to save records to database:",a)}return await f(r,"airtable.records.get",{...t},"completed"),o},T=async(r,t)=>{let o=await c(`${t.baseId}/${t.tableIdOrName}`,r.key,{method:"GET",query:{...t,sort:t.sort?.map(a=>`${a.field}:${a.direction}`).join(","),fields:t.fields?.join(",")}});if(o.records&&r.db.records)try{for(let a of o.records)await r.db.records.upsertByEntityId(a.id,{...a,baseId:t.baseId,tableId:t.tableIdOrName})}catch(a){console.warn("Failed to save records to database:",a)}return await f(r,"airtable.records.search",{...t},"completed"),o},G=async(r,t)=>{let o=await c(`${t.baseId}/${t.tableIdOrName}`,r.key,{method:"PATCH",body:{records:[{id:t.recordId,fields:t.fields}],typecast:t.typecast}});if(o.records&&r.db.records)try{for(let a of o.records)await r.db.records.upsertByEntityId(a.id,{...a,baseId:t.baseId,tableId:t.tableIdOrName})}catch(a){console.warn("Failed to save records to database:",a)}return await f(r,"airtable.records.update",{...t},"completed"),o};import*as k from"crypto";import{z as s}from"zod";var W=s.object({source:s.string().optional(),sourceMetadata:s.object({user:s.object({id:s.string(),email:s.string().optional(),name:s.string().optional()}).optional()}).optional()}),Q=s.object({base:s.object({id:s.string()}),webhook:s.object({id:s.string()}),timestamp:s.string(),actionMetadata:W.optional()}),M=s.object({base:s.object({id:s.string()}),webhook:s.object({id:s.string()}),timestamp:s.string(),actionMetadata:W.optional()}),j=Q,X=s.object({path:s.object({tableId:s.string().optional(),recordId:s.string().optional(),fieldId:s.string().optional()}).optional(),cellValuesByFieldId:s.record(s.unknown()).optional()}).passthrough(),Y=s.object({timestamp:s.string(),baseTransactionNumber:s.number().optional(),changes:s.array(X).optional(),changedTablesById:s.record(s.unknown()).optional()}).passthrough(),U=s.object({cursorForNextPayload:s.number().optional(),payloads:s.array(Y).default([])});function ee(r){return typeof r=="string"?JSON.parse(r):r}function F(){return r=>{let t=ee(r.body);return typeof t=="object"&&t!==null&&"base"in t&&"webhook"in t}}function N(r,t){if(!t)return{valid:!1,error:"Missing webhook secret"};let o=r.rawBody;if(!o)return{valid:!1,error:"Missing raw body for signature verification"};let a=r.headers,n=Array.isArray(a["x-airtable-content-mac"])?a["x-airtable-content-mac"][0]:a["x-airtable-content-mac"];if(!n)return{valid:!1,error:"Missing x-airtable-content-mac header"};try{let i=Buffer.from(t,"base64"),d=`hmac-sha256=${k.createHmac("sha256",i).update(o).digest("hex")}`;return k.timingSafeEqual(Buffer.from(n),Buffer.from(d))?{valid:!0}:{valid:!1,error:"Invalid signature"}}catch{return{valid:!1,error:"Invalid signature"}}}var _=async(r,t)=>{let o=await c(`bases/${t.baseId}/webhooks/${t.webhookId}/payloads`,r.key,{method:"GET",query:{cursor:t.cursor??0}}),a=U.parse(o);if(a.payloads&&r.db.records)try{for(let n of a.payloads){if(n.changes)for(let i of n.changes)i.path?.recordId&&i.cellValuesByFieldId&&await r.db.records.upsertByEntityId(i.path.recordId,{id:i.path.recordId,baseId:t.baseId,tableId:i.path.tableId,fields:{...i.cellValuesByFieldId}});if(n.changedTablesById)for(let[i,h]of Object.entries(n.changedTablesById)){let d=h;if(d.changedRecordsById){let l=d.changedRecordsById;for(let[y,E]of Object.entries(l)){let g=E;g.cellValuesByFieldId&&await r.db.records.upsertByEntityId(y,{id:y,baseId:t.baseId,tableId:i,fields:{...g.cellValuesByFieldId}})}}if(d.createdRecordsById){let l=d.createdRecordsById;for(let[y,E]of Object.entries(l)){let g=E;g.cellValuesByFieldId&&await r.db.records.upsertByEntityId(y,{id:y,baseId:t.baseId,tableId:i,fields:{...g.cellValuesByFieldId}})}}if(d.destroyedRecordIds){let l=Array.isArray(d.destroyedRecordIds)?d.destroyedRecordIds:[d.destroyedRecordIds];for(let y of l)typeof y=="string"&&await r.db.records.deleteByEntityId(y)}}}}catch(n){console.warn("Failed to save webhook payload records to database:",n)}return a};import{z as e}from"zod";var te=e.object({offset:e.string().optional()}),re=e.object({baseId:e.string(),include:e.array(e.enum(["visibleFieldIds","fieldIdsInSynced"])).optional()}),oe=e.object({baseId:e.string(),tableIdOrName:e.string(),fields:e.record(e.unknown()),typecast:e.boolean().optional()}),ae=e.object({baseId:e.string(),tableIdOrName:e.string(),fields:e.record(e.unknown()),fieldsToMergeOn:e.array(e.string()),typecast:e.boolean().optional()}),se=e.object({baseId:e.string(),tableIdOrName:e.string(),recordId:e.string()}),ne=e.object({baseId:e.string(),tableIdOrName:e.string(),recordId:e.string(),returnFieldsByFieldId:e.boolean().optional()}),ie=e.object({baseId:e.string(),tableIdOrName:e.string(),fields:e.array(e.string()).optional(),filterByFormula:e.string().optional(),maxRecords:e.number().optional(),pageSize:e.number().optional(),sort:e.array(e.object({field:e.string(),direction:e.enum(["asc","desc"]).optional()})).optional(),view:e.string().optional(),cellFormat:e.enum(["json","string"]).optional(),timeZone:e.string().optional(),userLocale:e.string().optional(),returnFieldsByFieldId:e.boolean().optional(),offset:e.string().optional()}),de=e.object({baseId:e.string(),tableIdOrName:e.string(),recordId:e.string(),fields:e.record(e.unknown()),typecast:e.boolean().optional()}),ce=e.object({baseId:e.string(),webhookId:e.string(),cursor:e.number().optional()}),b={basesGetMany:te,basesGetSchema:re,recordsCreate:oe,recordsCreateOrUpdate:ae,recordsDelete:se,recordsGet:ne,recordsSearch:ie,recordsUpdate:de,webhookGetPayloads:ce},A=e.object({id:e.string(),createdTime:e.string(),fields:e.record(e.unknown())}).passthrough(),pe=e.object({id:e.string(),name:e.string(),permissionLevel:e.string()}).passthrough(),le=e.object({id:e.string(),type:e.string(),name:e.string(),description:e.string().optional(),options:e.record(e.unknown()).optional()}).passthrough(),be=e.object({id:e.string(),type:e.string(),name:e.string(),personalForCreator:e.boolean().optional()}).passthrough(),ue=e.object({id:e.string(),name:e.string(),primaryFieldId:e.string(),description:e.string().optional(),fields:e.array(le),views:e.array(be)}).passthrough(),ye=e.object({bases:e.array(pe),offset:e.string().optional()}).passthrough(),he=e.object({tables:e.array(ue)}).passthrough(),me=e.object({records:e.array(A)}).passthrough(),fe=e.object({records:e.array(A)}).passthrough(),ge=e.object({id:e.string(),deleted:e.boolean()}).passthrough(),Ae=A,Ie=e.object({records:e.array(A),offset:e.string().optional()}).passthrough(),Re=e.object({records:e.array(A)}).passthrough(),ke=e.object({cursorForNextPayload:e.number().optional(),payloads:e.array(e.unknown()).default([])}).passthrough(),u={basesGetMany:ye,basesGetSchema:he,recordsCreate:me,recordsCreateOrUpdate:fe,recordsDelete:ge,recordsGet:Ae,recordsSearch:Ie,recordsUpdate:Re,webhookGetPayloads:ke};var S={getMany:O,getSchema:x},m={create:C,createOrUpdate:B,delete:P,get:v,search:T,update:G},z={getPayloads:_};import{ApiError as I}from"corsair/http";var D={RATE_LIMIT_ERROR:{match:(r,t)=>{if(r instanceof I&&r.status===429)return!0;let o=r.message.toLowerCase();return o.includes("rate_limited")||o.includes("ratelimited")||r.message.includes("429")},handler:async(r,t)=>{let o;return r instanceof I&&r.retryAfter!==void 0&&(o=r.retryAfter),{maxRetries:5,headersRetryAfterMs:o}}},AUTH_ERROR:{match:(r,t)=>{if(r instanceof I&&r.status===401)return!0;let o=r.message.toLowerCase();return o.includes("invalid_auth")||o.includes("unauthorized")||o.includes("authentication_required")||o.includes("invalid_api_key")},handler:async(r,t)=>(console.error(`[AIRTABLE:${t.operation}] Authentication failed - check your API key`),{maxRetries:0})},PERMISSION_ERROR:{match:(r,t)=>{if(r instanceof I&&r.status===403)return!0;let o=r.message.toLowerCase();return o.includes("permission_denied")||o.includes("forbidden")||o.includes("access_denied")||o.includes("invalid_permissions")},handler:async(r,t)=>(console.warn(`[AIRTABLE:${t.operation}] Permission denied: ${r.message}`),{maxRetries:0})},NETWORK_ERROR:{match:(r,t)=>{let o=r.message.toLowerCase();return o.includes("network")||o.includes("connection")||o.includes("econnrefused")||o.includes("enotfound")||o.includes("etimedout")||o.includes("fetch failed")||o.includes("network error")},handler:async(r,t)=>(console.warn(`[AIRTABLE:${t.operation}] Network error: ${r.message}`),{maxRetries:3})},NOT_FOUND_ERROR:{match:(r,t)=>{if(r instanceof I&&r.status===404)return!0;let o=r.message.toLowerCase();return o.includes("not_found")||o.includes("model_not_found")||o.includes("table_not_found")||o.includes("record_not_found")},handler:async(r,t)=>(console.warn(`[AIRTABLE:${t.operation}] Resource not found: ${r.message}`),{maxRetries:0})},DEFAULT:{match:(r,t)=>!0,handler:async(r,t)=>(console.error(`[AIRTABLE:${t.operation}] Unhandled error: ${r.message}`),{maxRetries:0})}};import{z as p}from"zod";var L=p.object({id:p.string(),fields:p.record(p.unknown()).optional(),createdTime:p.string().optional(),baseId:p.string().optional(),tableId:p.string().optional()}),$=p.object({id:p.string(),name:p.string().optional(),permissionLevel:p.string().optional()});var H={version:"1.0.0",entities:{records:L,bases:$}};import{logEventFromContext as q}from"corsair/core";var K={match:F(),handler:async(r,t)=>{let o=r.key,a=N(t,o);if(!a.valid)return{success:!1,statusCode:401,error:a.error||"Signature verification failed"};let n=t.payload;if(!n||typeof n!="object"||!("base"in n)||!("webhook"in n))return{success:!0,data:void 0};let i="";try{let d=await r.endpoints.webhooks.getPayloads({baseId:n.base.id,webhookId:n.webhook.id,cursor:void 0});await q(r,"airtable.webhook.event",{...n,payloads:[...d.payloads]},"completed")}catch(h){console.warn("Failed to fetch webhook payloads from Airtable:",h),await q(r,"airtable.webhook.event",{...n},"completed")}return{success:!0,corsairEntityId:i,data:n}}};var V={event:K};var Ee={bases:{getMany:S.getMany,getSchema:S.getSchema},records:{create:m.create,createOrUpdate:m.createOrUpdate,delete:m.delete,get:m.get,search:m.search,update:m.update},webhooks:{getPayloads:z.getPayloads}},Se={events:{event:V.event}},we={"bases.getMany":{input:b.basesGetMany,output:u.basesGetMany},"bases.getSchema":{input:b.basesGetSchema,output:u.basesGetSchema},"records.create":{input:b.recordsCreate,output:u.recordsCreate},"records.createOrUpdate":{input:b.recordsCreateOrUpdate,output:u.recordsCreateOrUpdate},"records.delete":{input:b.recordsDelete,output:u.recordsDelete},"records.get":{input:b.recordsGet,output:u.recordsGet},"records.search":{input:b.recordsSearch,output:u.recordsSearch},"records.update":{input:b.recordsUpdate,output:u.recordsUpdate}},Oe={"events.event":{description:"On new Airtable event \u2014 fires when records or tables change",payload:j,response:M}},xe="api_key",Ce={"bases.getMany":{riskLevel:"read",description:"List all accessible bases"},"bases.getSchema":{riskLevel:"read",description:"Get the schema (tables, fields, views) of a base"},"records.create":{riskLevel:"write",description:"Create a record in a table"},"records.createOrUpdate":{riskLevel:"write",description:"Create or update a record using upsert"},"records.delete":{riskLevel:"destructive",description:"Delete a record from a table [DESTRUCTIVE]"},"records.get":{riskLevel:"read",description:"Get a single record by ID"},"records.search":{riskLevel:"read",description:"Search and list records with optional filters"},"records.update":{riskLevel:"write",description:"Update fields on an existing record"}},ut={api_key:{account:["one"]}};function yt(r={}){let t={...r,authType:r.authType??xe};return{id:"airtable",schema:H,options:t,hooks:t.hooks,webhookHooks:t.webhookHooks,endpoints:Ee,webhooks:Se,endpointMeta:Ce,endpointSchemas:we,webhookSchemas:Oe,pluginWebhookMatcher:o=>"x-airtable-content-mac"in o.headers,errorHandlers:{...D,...t.errorHandlers},keyBuilder:async(o,a)=>{if(a==="webhook"&&t.webhookSecret)return t.webhookSecret;if(a==="webhook"){let n=await o.keys.get_webhook_signature();return n||""}if(a==="endpoint"&&t.key)return t.key;if(a==="endpoint"&&o.authType==="api_key"){let n=await o.keys.get_api_key();return n||""}return""}}}export{yt as airtable,ut as airtableAuthConfig,we as airtableEndpointSchemas};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const AirtableRecord: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
5
|
+
createdTime: z.ZodOptional<z.ZodString>;
|
|
6
|
+
baseId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
tableId: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
id: string;
|
|
10
|
+
baseId?: string | undefined;
|
|
11
|
+
fields?: Record<string, unknown> | undefined;
|
|
12
|
+
createdTime?: string | undefined;
|
|
13
|
+
tableId?: string | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
id: string;
|
|
16
|
+
baseId?: string | undefined;
|
|
17
|
+
fields?: Record<string, unknown> | undefined;
|
|
18
|
+
createdTime?: string | undefined;
|
|
19
|
+
tableId?: string | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const AirtableBase: z.ZodObject<{
|
|
22
|
+
id: z.ZodString;
|
|
23
|
+
name: z.ZodOptional<z.ZodString>;
|
|
24
|
+
permissionLevel: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
id: string;
|
|
27
|
+
name?: string | undefined;
|
|
28
|
+
permissionLevel?: string | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
id: string;
|
|
31
|
+
name?: string | undefined;
|
|
32
|
+
permissionLevel?: string | undefined;
|
|
33
|
+
}>;
|
|
34
|
+
export type AirtableRecord = z.infer<typeof AirtableRecord>;
|
|
35
|
+
export type AirtableBase = z.infer<typeof AirtableBase>;
|
|
36
|
+
//# 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;AAGxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAMzB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;EAIvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const AirtableSchema: {
|
|
2
|
+
readonly version: "1.0.0";
|
|
3
|
+
readonly entities: {
|
|
4
|
+
readonly records: import("zod").ZodObject<{
|
|
5
|
+
id: import("zod").ZodString;
|
|
6
|
+
fields: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
7
|
+
createdTime: import("zod").ZodOptional<import("zod").ZodString>;
|
|
8
|
+
baseId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
9
|
+
tableId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
10
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
11
|
+
id: string;
|
|
12
|
+
baseId?: string | undefined;
|
|
13
|
+
fields?: Record<string, unknown> | undefined;
|
|
14
|
+
createdTime?: string | undefined;
|
|
15
|
+
tableId?: string | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
id: string;
|
|
18
|
+
baseId?: string | undefined;
|
|
19
|
+
fields?: Record<string, unknown> | undefined;
|
|
20
|
+
createdTime?: string | undefined;
|
|
21
|
+
tableId?: string | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
readonly bases: import("zod").ZodObject<{
|
|
24
|
+
id: import("zod").ZodString;
|
|
25
|
+
name: import("zod").ZodOptional<import("zod").ZodString>;
|
|
26
|
+
permissionLevel: import("zod").ZodOptional<import("zod").ZodString>;
|
|
27
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
28
|
+
id: string;
|
|
29
|
+
name?: string | undefined;
|
|
30
|
+
permissionLevel?: string | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
id: string;
|
|
33
|
+
name?: string | undefined;
|
|
34
|
+
permissionLevel?: string | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMjB,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../webhooks/event.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAGnE,eAAO,MAAM,KAAK,EAAE,gBAAgB,CAAC,OAAO,CA6D3C,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare const EventWebhooks: {
|
|
2
|
+
event: {
|
|
3
|
+
match: import("corsair/core").CorsairWebhookMatcher;
|
|
4
|
+
handler: import("corsair/core").CorsairWebhookHandler<import("..").AirtableContext, {
|
|
5
|
+
webhook: {
|
|
6
|
+
id: string;
|
|
7
|
+
};
|
|
8
|
+
base: {
|
|
9
|
+
id: string;
|
|
10
|
+
};
|
|
11
|
+
timestamp: string;
|
|
12
|
+
actionMetadata?: {
|
|
13
|
+
source?: string | undefined;
|
|
14
|
+
sourceMetadata?: {
|
|
15
|
+
user?: {
|
|
16
|
+
id: string;
|
|
17
|
+
name?: string | undefined;
|
|
18
|
+
email?: string | undefined;
|
|
19
|
+
} | undefined;
|
|
20
|
+
} | undefined;
|
|
21
|
+
} | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
webhook: {
|
|
24
|
+
id: string;
|
|
25
|
+
};
|
|
26
|
+
base: {
|
|
27
|
+
id: string;
|
|
28
|
+
};
|
|
29
|
+
timestamp: string;
|
|
30
|
+
actionMetadata?: {
|
|
31
|
+
source?: string | undefined;
|
|
32
|
+
sourceMetadata?: {
|
|
33
|
+
user?: {
|
|
34
|
+
id: string;
|
|
35
|
+
name?: string | undefined;
|
|
36
|
+
email?: string | undefined;
|
|
37
|
+
} | undefined;
|
|
38
|
+
} | undefined;
|
|
39
|
+
} | undefined;
|
|
40
|
+
}>;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export * from './types';
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../webhooks/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEzB,CAAC;AAEF,cAAc,SAAS,CAAC"}
|