@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 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.
@@ -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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"}
@@ -0,0 +1,4 @@
1
+ export { AirtableClient } from './client';
2
+ export type { Airtable } from './types';
3
+ export { AirtableValidators, ValidationError } from './validators';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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
+ }