@marketing-sdk/airtable 0.1.1-experimental.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 +21 -0
- package/dist/client.d.ts +63 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +231 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +80 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +7 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +17 -0
- package/dist/validators.js.map +1 -0
- package/package.json +39 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Cody
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { CreateResponse, IRecordProvider, BaseProvider } from '@marketing-sdk/core';
|
|
2
|
+
import { Airtable } from './types';
|
|
3
|
+
export declare class AirtableClient extends BaseProvider implements IRecordProvider<Airtable.RecordPayload, Airtable.RecordResponse, Airtable.RecordsResponse> {
|
|
4
|
+
private personalAccessToken;
|
|
5
|
+
private baseId;
|
|
6
|
+
private metaBaseUrl;
|
|
7
|
+
constructor(config: {
|
|
8
|
+
personalAccessToken: string;
|
|
9
|
+
baseId: string;
|
|
10
|
+
});
|
|
11
|
+
protected getDefaultHeaders(): Record<string, string>;
|
|
12
|
+
protected getAuthHeaders(): Record<string, string>;
|
|
13
|
+
createRecord(record: Airtable.RecordPayload, tableName: string): Promise<CreateResponse<Airtable.RecordResponse>>;
|
|
14
|
+
createRecords(payload: {
|
|
15
|
+
records: Airtable.RecordPayload[];
|
|
16
|
+
}, tableName: string): Promise<CreateResponse<Airtable.RecordsResponse>>;
|
|
17
|
+
getRecord(recordId: string, tableName: string): Promise<CreateResponse<Airtable.RecordResponse>>;
|
|
18
|
+
getRecords(tableName: string, params?: {
|
|
19
|
+
fields?: string[];
|
|
20
|
+
filterByFormula?: string;
|
|
21
|
+
maxRecords?: number;
|
|
22
|
+
pageSize?: number;
|
|
23
|
+
sort?: Array<{
|
|
24
|
+
field: string;
|
|
25
|
+
direction?: "asc" | "desc";
|
|
26
|
+
}>;
|
|
27
|
+
view?: string;
|
|
28
|
+
offset?: string;
|
|
29
|
+
}): Promise<CreateResponse<Airtable.RecordsResponse>>;
|
|
30
|
+
updateRecord(recordId: string, record: Airtable.RecordPayload, tableName: string): Promise<CreateResponse<Airtable.RecordResponse>>;
|
|
31
|
+
updateRecords(payload: {
|
|
32
|
+
records: Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
fields: Record<string, any>;
|
|
35
|
+
}>;
|
|
36
|
+
}, tableName: string): Promise<CreateResponse<Airtable.RecordsResponse>>;
|
|
37
|
+
deleteRecord(recordId: string, tableName: string): Promise<CreateResponse<{
|
|
38
|
+
id: string;
|
|
39
|
+
deleted: boolean;
|
|
40
|
+
}>>;
|
|
41
|
+
deleteRecords(recordIds: string[], tableName: string): Promise<CreateResponse<{
|
|
42
|
+
records: Array<{
|
|
43
|
+
id: string;
|
|
44
|
+
deleted: boolean;
|
|
45
|
+
}>;
|
|
46
|
+
}>>;
|
|
47
|
+
getBases(params?: {
|
|
48
|
+
offset?: string;
|
|
49
|
+
}): Promise<CreateResponse<Airtable.BasesResponse>>;
|
|
50
|
+
getBase(baseId: string): Promise<CreateResponse<Airtable.BaseResponse>>;
|
|
51
|
+
getTables(baseId?: string): Promise<CreateResponse<Airtable.TablesResponse>>;
|
|
52
|
+
getTable(tableIdOrName: string, baseId?: string): Promise<CreateResponse<Airtable.TableResponse>>;
|
|
53
|
+
createTable(table: Airtable.TablePayload, baseId?: string): Promise<CreateResponse<Airtable.TableResponse>>;
|
|
54
|
+
updateTable(tableIdOrName: string, table: Partial<Airtable.TablePayload>, baseId?: string): Promise<CreateResponse<Airtable.TableResponse>>;
|
|
55
|
+
createField(tableIdOrName: string, field: Airtable.FieldPayload, baseId?: string): Promise<CreateResponse<Airtable.FieldResponse>>;
|
|
56
|
+
updateField(tableIdOrName: string, fieldIdOrName: string, field: Partial<Airtable.FieldPayload>, baseId?: string): Promise<CreateResponse<Airtable.FieldResponse>>;
|
|
57
|
+
createComment(recordId: string, tableName: string, comment: Airtable.CommentPayload): Promise<CreateResponse<Airtable.CommentResponse>>;
|
|
58
|
+
getComments(recordId: string, tableName: string, params?: {
|
|
59
|
+
offset?: string;
|
|
60
|
+
}): Promise<CreateResponse<Airtable.CommentsResponse>>;
|
|
61
|
+
deleteComment(recordId: string, tableName: string, commentId: string): Promise<CreateResponse<void>>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AirtableClient = void 0;
|
|
4
|
+
const core_1 = require("@marketing-sdk/core");
|
|
5
|
+
const validators_1 = require("./validators");
|
|
6
|
+
class AirtableClient extends core_1.BaseProvider {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
super({
|
|
9
|
+
baseURL: `https://api.airtable.com/v0/${config.baseId}`,
|
|
10
|
+
timeout: 30000,
|
|
11
|
+
});
|
|
12
|
+
this.metaBaseUrl = "https://api.airtable.com/v0/meta/bases";
|
|
13
|
+
this.personalAccessToken = config.personalAccessToken;
|
|
14
|
+
this.baseId = config.baseId;
|
|
15
|
+
}
|
|
16
|
+
getDefaultHeaders() {
|
|
17
|
+
return {
|
|
18
|
+
"Content-Type": "application/json",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
getAuthHeaders() {
|
|
22
|
+
return {
|
|
23
|
+
Authorization: `Bearer ${this.personalAccessToken}`,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async createRecord(record, tableName) {
|
|
27
|
+
validators_1.AirtableValidators.validateRecordPayload(record);
|
|
28
|
+
return this.makeRequest({
|
|
29
|
+
url: `/${encodeURIComponent(tableName)}`,
|
|
30
|
+
method: "POST",
|
|
31
|
+
body: record,
|
|
32
|
+
}, "Create Record");
|
|
33
|
+
}
|
|
34
|
+
async createRecords(payload, tableName) {
|
|
35
|
+
payload.records.forEach((record, index) => {
|
|
36
|
+
try {
|
|
37
|
+
validators_1.AirtableValidators.validateRecordPayload(record);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
throw new Error(`Record at index ${index}: ${error.message}`);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return this.makeRequest({
|
|
44
|
+
url: `/${encodeURIComponent(tableName)}`,
|
|
45
|
+
method: "POST",
|
|
46
|
+
body: payload,
|
|
47
|
+
}, "Create Records");
|
|
48
|
+
}
|
|
49
|
+
async getRecord(recordId, tableName) {
|
|
50
|
+
core_1.Validators.validateId(recordId, "recordId");
|
|
51
|
+
return this.makeRequest({
|
|
52
|
+
url: `/${encodeURIComponent(tableName)}/${recordId}`,
|
|
53
|
+
method: "GET",
|
|
54
|
+
}, "Get Record");
|
|
55
|
+
}
|
|
56
|
+
async getRecords(tableName, params) {
|
|
57
|
+
if (params?.maxRecords) {
|
|
58
|
+
core_1.Validators.validatePaginationParams({ limit: params.maxRecords });
|
|
59
|
+
}
|
|
60
|
+
if (params?.pageSize) {
|
|
61
|
+
core_1.Validators.validatePaginationParams({ limit: params.pageSize });
|
|
62
|
+
}
|
|
63
|
+
const queryParams = {};
|
|
64
|
+
if (params?.fields) {
|
|
65
|
+
params.fields.forEach((field, index) => {
|
|
66
|
+
queryParams[`fields[${index}]`] = field;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (params?.filterByFormula)
|
|
70
|
+
queryParams.filterByFormula = params.filterByFormula;
|
|
71
|
+
if (params?.maxRecords)
|
|
72
|
+
queryParams.maxRecords = params.maxRecords;
|
|
73
|
+
if (params?.pageSize)
|
|
74
|
+
queryParams.pageSize = params.pageSize;
|
|
75
|
+
if (params?.view)
|
|
76
|
+
queryParams.view = params.view;
|
|
77
|
+
if (params?.offset)
|
|
78
|
+
queryParams.offset = params.offset;
|
|
79
|
+
if (params?.sort) {
|
|
80
|
+
params.sort.forEach((sortField, index) => {
|
|
81
|
+
queryParams[`sort[${index}][field]`] = sortField.field;
|
|
82
|
+
if (sortField.direction) {
|
|
83
|
+
queryParams[`sort[${index}][direction]`] = sortField.direction;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return this.makeRequest({
|
|
88
|
+
url: `/${encodeURIComponent(tableName)}`,
|
|
89
|
+
method: "GET",
|
|
90
|
+
params: queryParams,
|
|
91
|
+
}, "Get Records");
|
|
92
|
+
}
|
|
93
|
+
async updateRecord(recordId, record, tableName) {
|
|
94
|
+
core_1.Validators.validateId(recordId, "recordId");
|
|
95
|
+
validators_1.AirtableValidators.validateRecordPayload(record);
|
|
96
|
+
return this.makeRequest({
|
|
97
|
+
url: `/${encodeURIComponent(tableName)}/${recordId}`,
|
|
98
|
+
method: "PATCH",
|
|
99
|
+
body: record,
|
|
100
|
+
}, "Update Record");
|
|
101
|
+
}
|
|
102
|
+
async updateRecords(payload, tableName) {
|
|
103
|
+
payload.records.forEach((record, index) => {
|
|
104
|
+
try {
|
|
105
|
+
core_1.Validators.validateId(record.id, `records[${index}].id`);
|
|
106
|
+
validators_1.AirtableValidators.validateRecordPayload({ fields: record.fields });
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
throw new Error(`Record at index ${index}: ${error.message}`);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return this.makeRequest({
|
|
113
|
+
url: `/${encodeURIComponent(tableName)}`,
|
|
114
|
+
method: "PATCH",
|
|
115
|
+
body: payload,
|
|
116
|
+
}, "Update Records");
|
|
117
|
+
}
|
|
118
|
+
async deleteRecord(recordId, tableName) {
|
|
119
|
+
core_1.Validators.validateId(recordId, "recordId");
|
|
120
|
+
return this.makeRequest({
|
|
121
|
+
url: `/${encodeURIComponent(tableName)}/${recordId}`,
|
|
122
|
+
method: "DELETE",
|
|
123
|
+
}, "Delete Record");
|
|
124
|
+
}
|
|
125
|
+
async deleteRecords(recordIds, tableName) {
|
|
126
|
+
recordIds.forEach((id, index) => {
|
|
127
|
+
core_1.Validators.validateId(id, `recordIds[${index}]`);
|
|
128
|
+
});
|
|
129
|
+
const queryParams = {};
|
|
130
|
+
recordIds.forEach((id, index) => {
|
|
131
|
+
queryParams[`records[${index}]`] = id;
|
|
132
|
+
});
|
|
133
|
+
return this.makeRequest({
|
|
134
|
+
url: `/${encodeURIComponent(tableName)}`,
|
|
135
|
+
method: "DELETE",
|
|
136
|
+
params: queryParams,
|
|
137
|
+
}, "Delete Records");
|
|
138
|
+
}
|
|
139
|
+
async getBases(params) {
|
|
140
|
+
return this.makeRequest({
|
|
141
|
+
url: this.metaBaseUrl,
|
|
142
|
+
method: "GET",
|
|
143
|
+
params,
|
|
144
|
+
}, "Get Bases");
|
|
145
|
+
}
|
|
146
|
+
async getBase(baseId) {
|
|
147
|
+
core_1.Validators.validateId(baseId, "baseId");
|
|
148
|
+
return this.makeRequest({
|
|
149
|
+
url: `${this.metaBaseUrl}/${baseId}`,
|
|
150
|
+
method: "GET",
|
|
151
|
+
}, "Get Base");
|
|
152
|
+
}
|
|
153
|
+
async getTables(baseId) {
|
|
154
|
+
const targetBaseId = baseId || this.baseId;
|
|
155
|
+
core_1.Validators.validateId(targetBaseId, "baseId");
|
|
156
|
+
return this.makeRequest({
|
|
157
|
+
url: `${this.metaBaseUrl}/${targetBaseId}/tables`,
|
|
158
|
+
method: "GET",
|
|
159
|
+
}, "Get Tables");
|
|
160
|
+
}
|
|
161
|
+
async getTable(tableIdOrName, baseId) {
|
|
162
|
+
const targetBaseId = baseId || this.baseId;
|
|
163
|
+
core_1.Validators.validateId(targetBaseId, "baseId");
|
|
164
|
+
return this.makeRequest({
|
|
165
|
+
url: `${this.metaBaseUrl}/${targetBaseId}/tables/${encodeURIComponent(tableIdOrName)}`,
|
|
166
|
+
method: "GET",
|
|
167
|
+
}, "Get Table");
|
|
168
|
+
}
|
|
169
|
+
async createTable(table, baseId) {
|
|
170
|
+
const targetBaseId = baseId || this.baseId;
|
|
171
|
+
core_1.Validators.validateId(targetBaseId, "baseId");
|
|
172
|
+
return this.makeRequest({
|
|
173
|
+
url: `${this.metaBaseUrl}/${targetBaseId}/tables`,
|
|
174
|
+
method: "POST",
|
|
175
|
+
body: table,
|
|
176
|
+
}, "Create Table");
|
|
177
|
+
}
|
|
178
|
+
async updateTable(tableIdOrName, table, baseId) {
|
|
179
|
+
const targetBaseId = baseId || this.baseId;
|
|
180
|
+
core_1.Validators.validateId(targetBaseId, "baseId");
|
|
181
|
+
return this.makeRequest({
|
|
182
|
+
url: `${this.metaBaseUrl}/${targetBaseId}/tables/${encodeURIComponent(tableIdOrName)}`,
|
|
183
|
+
method: "PATCH",
|
|
184
|
+
body: table,
|
|
185
|
+
}, "Update Table");
|
|
186
|
+
}
|
|
187
|
+
async createField(tableIdOrName, field, baseId) {
|
|
188
|
+
const targetBaseId = baseId || this.baseId;
|
|
189
|
+
core_1.Validators.validateId(targetBaseId, "baseId");
|
|
190
|
+
return this.makeRequest({
|
|
191
|
+
url: `${this.metaBaseUrl}/${targetBaseId}/tables/${encodeURIComponent(tableIdOrName)}/fields`,
|
|
192
|
+
method: "POST",
|
|
193
|
+
body: field,
|
|
194
|
+
}, "Create Field");
|
|
195
|
+
}
|
|
196
|
+
async updateField(tableIdOrName, fieldIdOrName, field, baseId) {
|
|
197
|
+
const targetBaseId = baseId || this.baseId;
|
|
198
|
+
core_1.Validators.validateId(targetBaseId, "baseId");
|
|
199
|
+
return this.makeRequest({
|
|
200
|
+
url: `${this.metaBaseUrl}/${targetBaseId}/tables/${encodeURIComponent(tableIdOrName)}/fields/${encodeURIComponent(fieldIdOrName)}`,
|
|
201
|
+
method: "PATCH",
|
|
202
|
+
body: field,
|
|
203
|
+
}, "Update Field");
|
|
204
|
+
}
|
|
205
|
+
async createComment(recordId, tableName, comment) {
|
|
206
|
+
core_1.Validators.validateId(recordId, "recordId");
|
|
207
|
+
return this.makeRequest({
|
|
208
|
+
url: `/${encodeURIComponent(tableName)}/${recordId}/comments`,
|
|
209
|
+
method: "POST",
|
|
210
|
+
body: comment,
|
|
211
|
+
}, "Create Comment");
|
|
212
|
+
}
|
|
213
|
+
async getComments(recordId, tableName, params) {
|
|
214
|
+
core_1.Validators.validateId(recordId, "recordId");
|
|
215
|
+
return this.makeRequest({
|
|
216
|
+
url: `/${encodeURIComponent(tableName)}/${recordId}/comments`,
|
|
217
|
+
method: "GET",
|
|
218
|
+
params,
|
|
219
|
+
}, "Get Comments");
|
|
220
|
+
}
|
|
221
|
+
async deleteComment(recordId, tableName, commentId) {
|
|
222
|
+
core_1.Validators.validateId(recordId, "recordId");
|
|
223
|
+
core_1.Validators.validateId(commentId, "commentId");
|
|
224
|
+
return this.makeRequest({
|
|
225
|
+
url: `/${encodeURIComponent(tableName)}/${recordId}/comments/${commentId}`,
|
|
226
|
+
method: "DELETE",
|
|
227
|
+
}, "Delete Comment");
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.AirtableClient = AirtableClient;
|
|
231
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationError = exports.AirtableValidators = exports.AirtableClient = void 0;
|
|
4
|
+
var client_1 = require("./client");
|
|
5
|
+
Object.defineProperty(exports, "AirtableClient", { enumerable: true, get: function () { return client_1.AirtableClient; } });
|
|
6
|
+
var validators_1 = require("./validators");
|
|
7
|
+
Object.defineProperty(exports, "AirtableValidators", { enumerable: true, get: function () { return validators_1.AirtableValidators; } });
|
|
8
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return validators_1.ValidationError; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AAEvB,2CAAmE;AAA1D,gHAAA,kBAAkB,OAAA;AAAE,6GAAA,eAAe,OAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export declare namespace Airtable {
|
|
2
|
+
type RecordPayload = {
|
|
3
|
+
fields: Record<string, any>;
|
|
4
|
+
};
|
|
5
|
+
type RecordResponse = {
|
|
6
|
+
id: string;
|
|
7
|
+
fields: Record<string, any>;
|
|
8
|
+
createdTime: string;
|
|
9
|
+
};
|
|
10
|
+
type RecordsResponse = {
|
|
11
|
+
records: RecordResponse[];
|
|
12
|
+
offset?: string;
|
|
13
|
+
};
|
|
14
|
+
type BaseResponse = {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
permissionLevel: string;
|
|
18
|
+
};
|
|
19
|
+
type BasesResponse = {
|
|
20
|
+
bases: BaseResponse[];
|
|
21
|
+
offset?: string;
|
|
22
|
+
};
|
|
23
|
+
type FieldType = "singleLineText" | "multilineText" | "richText" | "email" | "url" | "number" | "currency" | "percent" | "date" | "dateTime" | "phoneNumber" | "multipleAttachments" | "checkbox" | "singleSelect" | "multipleSelect" | "collaborator" | "multipleCollaborators" | "multipleRecordLinks" | "count" | "rollup" | "formula" | "createdTime" | "autoNumber" | "barcode" | "rating";
|
|
24
|
+
type FieldPayload = {
|
|
25
|
+
name: string;
|
|
26
|
+
type: FieldType;
|
|
27
|
+
description?: string;
|
|
28
|
+
options?: Record<string, any>;
|
|
29
|
+
};
|
|
30
|
+
type FieldResponse = {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
type: FieldType;
|
|
34
|
+
description?: string;
|
|
35
|
+
options?: Record<string, any>;
|
|
36
|
+
};
|
|
37
|
+
type TablePayload = {
|
|
38
|
+
name: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
fields?: FieldPayload[];
|
|
41
|
+
};
|
|
42
|
+
type TableResponse = {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
fields: FieldResponse[];
|
|
47
|
+
};
|
|
48
|
+
type TablesResponse = {
|
|
49
|
+
tables: TableResponse[];
|
|
50
|
+
};
|
|
51
|
+
type CommentPayload = {
|
|
52
|
+
text: string;
|
|
53
|
+
mentions?: Array<{
|
|
54
|
+
mentionedUserId: string;
|
|
55
|
+
}>;
|
|
56
|
+
};
|
|
57
|
+
type CommentResponse = {
|
|
58
|
+
id: string;
|
|
59
|
+
text: string;
|
|
60
|
+
createdTime: string;
|
|
61
|
+
lastUpdatedTime: string;
|
|
62
|
+
author: {
|
|
63
|
+
id: string;
|
|
64
|
+
email: string;
|
|
65
|
+
name: string;
|
|
66
|
+
};
|
|
67
|
+
mentions?: Array<{
|
|
68
|
+
mentionedUserId: string;
|
|
69
|
+
}>;
|
|
70
|
+
};
|
|
71
|
+
type CommentsResponse = {
|
|
72
|
+
comments: CommentResponse[];
|
|
73
|
+
offset?: string;
|
|
74
|
+
};
|
|
75
|
+
type BasePayload = {
|
|
76
|
+
name: string;
|
|
77
|
+
tables?: TablePayload[];
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ValidationError } from '@marketing-sdk/core';
|
|
2
|
+
import { Airtable } from './types';
|
|
3
|
+
export { ValidationError };
|
|
4
|
+
export declare class AirtableValidators {
|
|
5
|
+
static validateRecordPayload(payload: Airtable.RecordPayload): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,GAAG,IAAI;CASpE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AirtableValidators = exports.ValidationError = void 0;
|
|
4
|
+
const core_1 = require("@marketing-sdk/core");
|
|
5
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return core_1.ValidationError; } });
|
|
6
|
+
class AirtableValidators {
|
|
7
|
+
static validateRecordPayload(payload) {
|
|
8
|
+
if (!payload.fields || typeof payload.fields !== 'object') {
|
|
9
|
+
throw new core_1.ValidationError('fields', 'Fields object is required');
|
|
10
|
+
}
|
|
11
|
+
if (Object.keys(payload.fields).length === 0) {
|
|
12
|
+
throw new core_1.ValidationError('fields', 'At least one field is required');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.AirtableValidators = AirtableValidators;
|
|
17
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":";;;AAAA,8CAAsD;AAG7C,gGAHA,sBAAe,OAGA;AAExB,MAAa,kBAAkB;IAC7B,MAAM,CAAC,qBAAqB,CAAC,OAA+B;QAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,IAAI,sBAAe,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,sBAAe,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF;AAVD,gDAUC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@marketing-sdk/airtable",
|
|
3
|
+
"version": "0.1.1-experimental.0",
|
|
4
|
+
"description": "Airtable provider for marketing-sdk",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@marketing-sdk/core": "0.1.1-experimental.0"
|
|
22
|
+
},
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"@marketing-sdk/core": ">=0.1.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"typescript": "^5.3.0",
|
|
28
|
+
"jest": "^29.7.0",
|
|
29
|
+
"ts-jest": "^29.1.0",
|
|
30
|
+
"@types/jest": "^29.5.0",
|
|
31
|
+
"@types/node": "^20.0.0"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc",
|
|
35
|
+
"test": "jest",
|
|
36
|
+
"test:coverage": "jest --coverage",
|
|
37
|
+
"typecheck": "tsc --noEmit"
|
|
38
|
+
}
|
|
39
|
+
}
|