@rudderstack/integrations-lib 0.2.14 → 0.2.15

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.
@@ -0,0 +1,28 @@
1
+ import { AuthObject, CreateSegmentBody, CreateSegmentResponse, GetSegmentsResponse } from './type';
2
+ import { AxiosClient } from '../../network/clients/axios_client';
3
+ export default class CustomerIOSegment {
4
+ static readonly url: string;
5
+ axiosClient: AxiosClient;
6
+ authObject: AuthObject;
7
+ constructor(authObject: any);
8
+ private static validateAuthObject;
9
+ /**
10
+ * This function returns the app api key.
11
+ * @returns
12
+ */
13
+ getAppApiKey(): string;
14
+ /**
15
+ * This method fetches the segments. If unable to fetch the segments, it returns a RestError.
16
+ * ref: https://docs.customer.io/api/app/#operation/listSegments
17
+ * @returns
18
+ */
19
+ getSegments(): Promise<GetSegmentsResponse>;
20
+ /**
21
+ * This method creates a manual segment. It requires the segment body. The method returns the created segment. If the manual segment is not created, it returns a RestError.
22
+ * ref: https://docs.customer.io/api/app/#operation/createManSegment
23
+ * @param body CreateSegment fields
24
+ * @returns
25
+ */
26
+ createSegment(body: CreateSegmentBody): Promise<CreateSegmentResponse>;
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGjE,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAyC;IAEpE,WAAW,EAAE,WAAW,CAAC;IAEzB,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAMtB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAOjC;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAiBjD;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAiB7E"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
4
+ const axios_client_1 = require("../../network/clients/axios_client");
5
+ class CustomerIOSegment {
6
+ constructor(authObject) {
7
+ CustomerIOSegment.validateAuthObject(authObject);
8
+ this.authObject = authObject;
9
+ this.axiosClient = new axios_client_1.AxiosClient();
10
+ }
11
+ static validateAuthObject(authObject) {
12
+ if (!authObject?.appApiKey || typeof authObject.appApiKey !== 'string') {
13
+ throw new Error('appApiKey is required and must be a string');
14
+ }
15
+ return authObject;
16
+ }
17
+ /**
18
+ * This function returns the app api key.
19
+ * @returns
20
+ */
21
+ getAppApiKey() {
22
+ return this.authObject.appApiKey;
23
+ }
24
+ /**
25
+ * This method fetches the segments. If unable to fetch the segments, it returns a RestError.
26
+ * ref: https://docs.customer.io/api/app/#operation/listSegments
27
+ * @returns
28
+ */
29
+ async getSegments() {
30
+ const headers = {
31
+ Accept: 'application/json',
32
+ Authorization: `Bearer ${this.getAppApiKey()}`,
33
+ };
34
+ const resp = await this.axiosClient.get(CustomerIOSegment.url, {
35
+ headers,
36
+ });
37
+ if (resp.type === 'success') {
38
+ return resp.responseBody;
39
+ }
40
+ throw new utils_1.RestError(resp.message, resp.statusCode);
41
+ }
42
+ /**
43
+ * This method creates a manual segment. It requires the segment body. The method returns the created segment. If the manual segment is not created, it returns a RestError.
44
+ * ref: https://docs.customer.io/api/app/#operation/createManSegment
45
+ * @param body CreateSegment fields
46
+ * @returns
47
+ */
48
+ async createSegment(body) {
49
+ const headers = {
50
+ 'Content-Type': 'application/json',
51
+ Authorization: `Bearer ${this.getAppApiKey()}`,
52
+ };
53
+ const resp = await this.axiosClient.post(CustomerIOSegment.url, body, {
54
+ headers,
55
+ });
56
+ if (resp.type === 'success') {
57
+ return resp.responseBody;
58
+ }
59
+ throw new utils_1.RestError(resp.message, resp.statusCode);
60
+ }
61
+ }
62
+ CustomerIOSegment.url = 'https://api.customer.io/v1/segments';
63
+ exports.default = CustomerIOSegment;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9jdXN0b21lcmlvX2F1ZGllbmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsbUNBQW9DO0FBQ3BDLHFFQUFpRTtBQUdqRSxNQUFxQixpQkFBaUI7SUFPcEMsWUFBWSxVQUFVO1FBQ3BCLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSwwQkFBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFzQjtRQUN0RCxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsSUFBSSxPQUFPLFVBQVUsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUMvRDtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsa0JBQWtCO1lBQzFCLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtTQUMvQyxDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQXFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ3ZFLGlCQUFpQixDQUFDLEdBQUcsRUFDckI7WUFDRSxPQUFPO1NBQ1IsQ0FDRixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDMUI7UUFDRCxNQUFNLElBQUksaUJBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQXVCO1FBQ3pDLE1BQU0sT0FBTyxHQUFHO1lBQ2QsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7U0FDL0MsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUF1QyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxRSxpQkFBaUIsQ0FBQyxHQUFHLEVBQ3JCLElBQUksRUFDSjtZQUNFLE9BQU87U0FDUixDQUNGLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQjtRQUNELE1BQU0sSUFBSSxpQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O0FBdkVlLHFCQUFHLEdBQVcscUNBQXFDLENBQUM7a0JBRGpELGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhPYmplY3QsIENyZWF0ZVNlZ21lbnRCb2R5LCBDcmVhdGVTZWdtZW50UmVzcG9uc2UsIEdldFNlZ21lbnRzUmVzcG9uc2UgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgUmVzdEVycm9yIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBBeGlvc0NsaWVudCB9IGZyb20gJy4uLy4uL25ldHdvcmsvY2xpZW50cy9heGlvc19jbGllbnQnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9uZXR3b3JrJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3VzdG9tZXJJT1NlZ21lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgdXJsOiBzdHJpbmcgPSAnaHR0cHM6Ly9hcGkuY3VzdG9tZXIuaW8vdjEvc2VnbWVudHMnO1xuXG4gIGF4aW9zQ2xpZW50OiBBeGlvc0NsaWVudDtcblxuICBhdXRoT2JqZWN0OiBBdXRoT2JqZWN0O1xuXG4gIGNvbnN0cnVjdG9yKGF1dGhPYmplY3QpIHtcbiAgICBDdXN0b21lcklPU2VnbWVudC52YWxpZGF0ZUF1dGhPYmplY3QoYXV0aE9iamVjdCk7XG4gICAgdGhpcy5hdXRoT2JqZWN0ID0gYXV0aE9iamVjdDtcbiAgICB0aGlzLmF4aW9zQ2xpZW50ID0gbmV3IEF4aW9zQ2xpZW50KCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUF1dGhPYmplY3QoYXV0aE9iamVjdDogQXV0aE9iamVjdCk6IEF1dGhPYmplY3Qge1xuICAgIGlmICghYXV0aE9iamVjdD8uYXBwQXBpS2V5IHx8IHR5cGVvZiBhdXRoT2JqZWN0LmFwcEFwaUtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXBwQXBpS2V5IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgfVxuICAgIHJldHVybiBhdXRoT2JqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYXBwIGFwaSBrZXkuXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRBcHBBcGlLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoT2JqZWN0LmFwcEFwaUtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBzZWdtZW50cy4gSWYgdW5hYmxlIHRvIGZldGNoIHRoZSBzZWdtZW50cywgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogcmVmOiBodHRwczovL2RvY3MuY3VzdG9tZXIuaW8vYXBpL2FwcC8jb3BlcmF0aW9uL2xpc3RTZWdtZW50c1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgZ2V0U2VnbWVudHMoKTogUHJvbWlzZTxHZXRTZWdtZW50c1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuZ2V0QXBwQXBpS2V5KCl9YCxcbiAgICB9O1xuICAgIGNvbnN0IHJlc3A6IEFwaVJlc3BvbnNlPEdldFNlZ21lbnRzUmVzcG9uc2U+ID0gYXdhaXQgdGhpcy5heGlvc0NsaWVudC5nZXQoXG4gICAgICBDdXN0b21lcklPU2VnbWVudC51cmwsXG4gICAgICB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9LFxuICAgICk7XG4gICAgaWYgKHJlc3AudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICByZXR1cm4gcmVzcC5yZXNwb25zZUJvZHk7XG4gICAgfVxuICAgIHRocm93IG5ldyBSZXN0RXJyb3IocmVzcC5tZXNzYWdlLCByZXNwLnN0YXR1c0NvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBtYW51YWwgc2VnbWVudC4gSXQgcmVxdWlyZXMgdGhlIHNlZ21lbnQgYm9keS4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBjcmVhdGVkIHNlZ21lbnQuIElmIHRoZSBtYW51YWwgc2VnbWVudCBpcyBub3QgY3JlYXRlZCwgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogcmVmOiBodHRwczovL2RvY3MuY3VzdG9tZXIuaW8vYXBpL2FwcC8jb3BlcmF0aW9uL2NyZWF0ZU1hblNlZ21lbnRcbiAgICogQHBhcmFtIGJvZHkgQ3JlYXRlU2VnbWVudCBmaWVsZHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGNyZWF0ZVNlZ21lbnQoYm9keTogQ3JlYXRlU2VnbWVudEJvZHkpOiBQcm9taXNlPENyZWF0ZVNlZ21lbnRSZXNwb25zZT4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuZ2V0QXBwQXBpS2V5KCl9YCxcbiAgICB9O1xuICAgIGNvbnN0IHJlc3A6IEFwaVJlc3BvbnNlPENyZWF0ZVNlZ21lbnRSZXNwb25zZT4gPSBhd2FpdCB0aGlzLmF4aW9zQ2xpZW50LnBvc3QoXG4gICAgICBDdXN0b21lcklPU2VnbWVudC51cmwsXG4gICAgICBib2R5LFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSxcbiAgICApO1xuICAgIGlmIChyZXNwLnR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgcmV0dXJuIHJlc3AucmVzcG9uc2VCb2R5O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUmVzdEVycm9yKHJlc3AubWVzc2FnZSwgcmVzcC5zdGF0dXNDb2RlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const axios_1 = __importDefault(require("axios"));
7
+ const axios_mock_adapter_1 = __importDefault(require("axios-mock-adapter"));
8
+ const _1 = __importDefault(require("."));
9
+ const utils_1 = require("./utils");
10
+ describe('customerio_audience', () => {
11
+ let mockAxios;
12
+ beforeEach(() => {
13
+ mockAxios = new axios_mock_adapter_1.default(axios_1.default);
14
+ });
15
+ afterEach(() => {
16
+ mockAxios.restore();
17
+ });
18
+ describe('getAppApiKey', () => {
19
+ it('should return app api key', () => {
20
+ const validAuthObject = {
21
+ appApiKey: 'test-app-api-key',
22
+ };
23
+ const customerioSegmentClient = new _1.default(validAuthObject);
24
+ customerioSegmentClient.authObject = validAuthObject;
25
+ const result = customerioSegmentClient.getAppApiKey();
26
+ expect(result).toBe(validAuthObject.appApiKey);
27
+ });
28
+ });
29
+ describe('validateAuthObject', () => {
30
+ it('should throw error when authObject has invalid appApiKey', () => {
31
+ const invalidAuthObject = {
32
+ appApiKey: 123,
33
+ };
34
+ try {
35
+ const customerioSegmentClient = new _1.default(invalidAuthObject);
36
+ customerioSegmentClient.getAppApiKey();
37
+ }
38
+ catch (e) {
39
+ expect(e).toEqual(new Error('appApiKey is required and must be a string'));
40
+ }
41
+ });
42
+ });
43
+ describe('getSegments', () => {
44
+ it('should return segments', async () => {
45
+ const validAuthObject = {
46
+ appApiKey: 'test-app-api-key',
47
+ };
48
+ const customerioSegmentClient = new _1.default(validAuthObject);
49
+ const validResponse = {
50
+ segments: [
51
+ {
52
+ id: 1,
53
+ deduplicate_id: '1:1736933577',
54
+ name: 'Signed up',
55
+ description: 'Includes all people who have a "created_at" UNIX timestamp value.',
56
+ state: 'finished',
57
+ progress: null,
58
+ type: 'dynamic',
59
+ tags: ['Sample'],
60
+ conditions: {
61
+ and: [
62
+ {
63
+ event: {
64
+ filters: {
65
+ and: [
66
+ {
67
+ field: 'to',
68
+ inverse: false,
69
+ operator: 'timestamp',
70
+ value: '0',
71
+ },
72
+ {
73
+ field: 'from',
74
+ inverse: true,
75
+ operator: 'timestamp',
76
+ value: '0',
77
+ },
78
+ ],
79
+ },
80
+ id: 1,
81
+ name: 'created_at',
82
+ type: 'attribute_change',
83
+ },
84
+ inverse: false,
85
+ times: 1,
86
+ within: 0,
87
+ },
88
+ ],
89
+ },
90
+ },
91
+ {
92
+ id: 2,
93
+ deduplicate_id: '10:1736958215',
94
+ name: 'segment-manual',
95
+ description: '',
96
+ state: 'finished',
97
+ progress: null,
98
+ type: 'manual',
99
+ tags: null,
100
+ },
101
+ ],
102
+ };
103
+ mockAxios.onGet('https://api.customer.io/v1/segments').reply(200, validResponse);
104
+ const result = await customerioSegmentClient.getSegments();
105
+ expect(result).toStrictEqual(validResponse);
106
+ });
107
+ it('should handle failure scenario', async () => {
108
+ const validAuthObject = {
109
+ appApiKey: 'test-app-api-key',
110
+ };
111
+ const customerioSegmentClient = new _1.default(validAuthObject);
112
+ mockAxios.onGet('https://api.customer.io/v1/segments').reply(401, {
113
+ errors: [
114
+ {
115
+ detail: 'unauthorized',
116
+ status: '401',
117
+ },
118
+ ],
119
+ });
120
+ try {
121
+ await customerioSegmentClient.getSegments();
122
+ }
123
+ catch (e) {
124
+ expect(e).toEqual(new utils_1.RestError('', 401));
125
+ }
126
+ });
127
+ });
128
+ describe('createSegment', () => {
129
+ it('should create new manual segment', async () => {
130
+ const validAuthObject = {
131
+ appApiKey: 'test-app-api-key',
132
+ };
133
+ const customerioSegmentClient = new _1.default(validAuthObject);
134
+ const validResponse = {
135
+ segment: {
136
+ id: 1,
137
+ deduplicate_id: '1:1737617152',
138
+ name: 'Create Segment',
139
+ description: 'From Rudderstack',
140
+ state: 'finished',
141
+ progress: null,
142
+ type: 'manual',
143
+ tags: null,
144
+ },
145
+ };
146
+ mockAxios.onPost('https://api.customer.io/v1/segments').reply(200, validResponse);
147
+ const result = await customerioSegmentClient.createSegment({
148
+ segment: {
149
+ name: 'Create Segment',
150
+ description: 'From Rudderstack',
151
+ },
152
+ });
153
+ expect(result).toStrictEqual(validResponse);
154
+ });
155
+ it('should handle failure scenario', async () => {
156
+ const validAuthObject = {
157
+ appApiKey: 'test-app-api-key',
158
+ };
159
+ const customerioSegmentClient = new _1.default(validAuthObject);
160
+ mockAxios.onPost('https://api.customer.io/v1/segments').reply(401, {
161
+ errors: [
162
+ {
163
+ detail: 'unauthorized',
164
+ status: '401',
165
+ },
166
+ ],
167
+ });
168
+ try {
169
+ await customerioSegmentClient.createSegment({
170
+ segment: {
171
+ name: 'Create Segment',
172
+ description: 'From Rudderstack',
173
+ },
174
+ });
175
+ }
176
+ catch (e) {
177
+ expect(e).toEqual(new utils_1.RestError('', 401));
178
+ }
179
+ });
180
+ });
181
+ });
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL2N1c3RvbWVyaW9fYXVkaWVuY2UvaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtEQUEwQjtBQUMxQiw0RUFBNkM7QUFDN0MseUNBQWtDO0FBQ2xDLG1DQUFvQztBQUVwQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO0lBQ25DLElBQUksU0FBc0IsQ0FBQztJQUUzQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsU0FBUyxHQUFHLElBQUksNEJBQVcsQ0FBQyxlQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUM1QixFQUFFLENBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO1lBQ25DLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixTQUFTLEVBQUUsa0JBQWtCO2FBQzlCLENBQUM7WUFFRixNQUFNLHVCQUF1QixHQUFHLElBQUksVUFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2RSx1QkFBdUIsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO1lBRXJELE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXRELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7WUFDbEUsTUFBTSxpQkFBaUIsR0FBRztn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QUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFNBQVMsRUFBRSxrQkFBa0I7YUFDOUIsQ0FBQztZQUNGLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxVQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZFLFNBQVMsQ0FBQyxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNqRSxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsTUFBTSxFQUFFLGNBQWM7d0JBQ3RCLE1BQU0sRUFBRSxLQUFLO3FCQUNkO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSTtnQkFDRixNQUFNLHVCQUF1QixDQUFDLGFBQWEsQ0FBQztvQkFDMUMsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLFdBQVcsRUFBRSxrQkFBa0I7cUJBQ2hDO2lCQUNGLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGlCQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDM0M7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IE1vY2tBZGFwdGVyIGZyb20gJ2F4aW9zLW1vY2stYWRhcHRlcic7XG5pbXBvcnQgQ3VzdG9tZXJJT1NlZ21lbnQgZnJvbSAnLic7XG5pbXBvcnQgeyBSZXN0RXJyb3IgfSBmcm9tICcuL3V0aWxzJztcblxuZGVzY3JpYmUoJ2N1c3RvbWVyaW9fYXVkaWVuY2UnLCAoKSA9PiB7XG4gIGxldCBtb2NrQXhpb3M6IE1vY2tBZGFwdGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG1vY2tBeGlvcyA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgbW9ja0F4aW9zLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEFwcEFwaUtleScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhcHAgYXBpIGtleScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQXV0aE9iamVjdCA9IHtcbiAgICAgICAgYXBwQXBpS2V5OiAndGVzdC1hcHAtYXBpLWtleScsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjdXN0b21lcmlvU2VnbWVudENsaWVudCA9IG5ldyBDdXN0b21lcklPU2VnbWVudCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgY3VzdG9tZXJpb1NlZ21lbnRDbGllbnQuYXV0aE9iamVjdCA9IHZhbGlkQXV0aE9iamVjdDtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gY3VzdG9tZXJpb1NlZ21lbnRDbGllbnQuZ2V0QXBwQXBpS2V5KCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodmFsaWRBdXRoT2JqZWN0LmFwcEFwaUtleSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgndmFsaWRhdGVBdXRoT2JqZWN0JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBhdXRoT2JqZWN0IGhhcyBpbnZhbGlkIGFwcEFwaUtleScsICgpID0+IHtcbiAgICAgIGNvbnN0IGludmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBhcHBBcGlLZXk6IDEyMyxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbWVyaW9TZWdtZW50Q2xpZW50ID0gbmV3IEN1c3RvbWVySU9TZWdtZW50KGludmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgICAgY3VzdG9tZXJpb1NlZ21lbnRDbGllbnQuZ2V0QXBwQXBpS2V5KCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV4cGVjdChlKS50b0VxdWFsKG5ldyBFcnJvcignYXBwQXBpS2V5IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgc3RyaW5nJykpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2dldFNlZ21lbnRzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHNlZ21lbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBhcHBBcGlLZXk6ICd0ZXN0LWFwcC1hcGkta2V5JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBjdXN0b21lcmlvU2VnbWVudENsaWVudCA9IG5ldyBDdXN0b21lcklPU2VnbWVudCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IHtcbiAgICAgICAgc2VnbWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgIGRlZHVwbGljYXRlX2lkOiAnMToxNzM2OTMzNTc3JyxcbiAgICAgICAgICAgIG5hbWU6ICdTaWduZWQgdXAnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdJbmNsdWRlcyBhbGwgcGVvcGxlIHdobyBoYXZlIGEgXCJjcmVhdGVkX2F0XCIgVU5JWCB0aW1lc3RhbXAgdmFsdWUuJyxcbiAgICAgICAgICAgIHN0YXRlOiAnZmluaXNoZWQnLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IG51bGwsXG4gICAgICAgICAgICB0eXBlOiAnZHluYW1pYycsXG4gICAgICAgICAgICB0YWdzOiBbJ1NhbXBsZSddLFxuICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICBhbmQ6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6ICd0aW1lc3RhbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdmcm9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJzZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6ICd0aW1lc3RhbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NyZWF0ZWRfYXQnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlX2NoYW5nZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW52ZXJzZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0aW1lczogMSxcbiAgICAgICAgICAgICAgICAgIHdpdGhpbjogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgZGVkdXBsaWNhdGVfaWQ6ICcxMDoxNzM2OTU4MjE1JyxcbiAgICAgICAgICAgIG5hbWU6ICdzZWdtZW50LW1hbnVhbCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICBzdGF0ZTogJ2ZpbmlzaGVkJyxcbiAgICAgICAgICAgIHByb2dyZXNzOiBudWxsLFxuICAgICAgICAgICAgdHlwZTogJ21hbnVhbCcsXG4gICAgICAgICAgICB0YWdzOiBudWxsLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgbW9ja0F4aW9zLm9uR2V0KCdodHRwczovL2FwaS5jdXN0b21lci5pby92MS9zZWdtZW50cycpLnJlcGx5KDIwMCwgdmFsaWRSZXNwb25zZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21lcmlvU2VnbWVudENsaWVudC5nZXRTZWdtZW50cygpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh2YWxpZFJlc3BvbnNlKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBhcHBBcGlLZXk6ICd0ZXN0LWFwcC1hcGkta2V5JyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGN1c3RvbWVyaW9TZWdtZW50Q2xpZW50ID0gbmV3IEN1c3RvbWVySU9TZWdtZW50KHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBtb2NrQXhpb3Mub25HZXQoJ2h0dHBzOi8vYXBpLmN1c3RvbWVyLmlvL3YxL3NlZ21lbnRzJykucmVwbHkoNDAxLCB7XG4gICAgICAgIGVycm9yczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGFpbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICAgICAgICBzdGF0dXM6ICc0MDEnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGN1c3RvbWVyaW9TZWdtZW50Q2xpZW50LmdldFNlZ21lbnRzKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV4cGVjdChlKS50b0VxdWFsKG5ldyBSZXN0RXJyb3IoJycsIDQwMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2NyZWF0ZVNlZ21lbnQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgbmV3IG1hbnVhbCBzZWdtZW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBhcHBBcGlLZXk6ICd0ZXN0LWFwcC1hcGkta2V5JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBjdXN0b21lcmlvU2VnbWVudENsaWVudCA9IG5ldyBDdXN0b21lcklPU2VnbWVudCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IHtcbiAgICAgICAgc2VnbWVudDoge1xuICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgIGRlZHVwbGljYXRlX2lkOiAnMToxNzM3NjE3MTUyJyxcbiAgICAgICAgICBuYW1lOiAnQ3JlYXRlIFNlZ21lbnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRnJvbSBSdWRkZXJzdGFjaycsXG4gICAgICAgICAgc3RhdGU6ICdmaW5pc2hlZCcsXG4gICAgICAgICAgcHJvZ3Jlc3M6IG51bGwsXG4gICAgICAgICAgdHlwZTogJ21hbnVhbCcsXG4gICAgICAgICAgdGFnczogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBtb2NrQXhpb3Mub25Qb3N0KCdodHRwczovL2FwaS5jdXN0b21lci5pby92MS9zZWdtZW50cycpLnJlcGx5KDIwMCwgdmFsaWRSZXNwb25zZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21lcmlvU2VnbWVudENsaWVudC5jcmVhdGVTZWdtZW50KHtcbiAgICAgICAgc2VnbWVudDoge1xuICAgICAgICAgIG5hbWU6ICdDcmVhdGUgU2VnbWVudCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdGcm9tIFJ1ZGRlcnN0YWNrJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh2YWxpZFJlc3BvbnNlKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBhcHBBcGlLZXk6ICd0ZXN0LWFwcC1hcGkta2V5JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBjdXN0b21lcmlvU2VnbWVudENsaWVudCA9IG5ldyBDdXN0b21lcklPU2VnbWVudCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgbW9ja0F4aW9zLm9uUG9zdCgnaHR0cHM6Ly9hcGkuY3VzdG9tZXIuaW8vdjEvc2VnbWVudHMnKS5yZXBseSg0MDEsIHtcbiAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGV0YWlsOiAndW5hdXRob3JpemVkJyxcbiAgICAgICAgICAgIHN0YXR1czogJzQwMScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgY3VzdG9tZXJpb1NlZ21lbnRDbGllbnQuY3JlYXRlU2VnbWVudCh7XG4gICAgICAgICAgc2VnbWVudDoge1xuICAgICAgICAgICAgbmFtZTogJ0NyZWF0ZSBTZWdtZW50JyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRnJvbSBSdWRkZXJzdGFjaycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV4cGVjdChlKS50b0VxdWFsKG5ldyBSZXN0RXJyb3IoJycsIDQwMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,36 @@
1
+ export interface AuthObject {
2
+ appApiKey: string;
3
+ }
4
+ export interface CreateSegmentBody {
5
+ segment: {
6
+ name: string;
7
+ description?: string;
8
+ };
9
+ }
10
+ export interface CreateSegmentResponse {
11
+ segment: {
12
+ id: number;
13
+ deduplicate_id?: string;
14
+ name?: string;
15
+ description?: string;
16
+ state?: string;
17
+ progress?: number | null;
18
+ type?: string;
19
+ tags?: string[] | null;
20
+ };
21
+ }
22
+ export interface GetSegmentsResponse {
23
+ segments: [
24
+ {
25
+ id: number;
26
+ deduplicate_id?: string;
27
+ name: string;
28
+ description?: string;
29
+ state?: string;
30
+ progress?: number | null;
31
+ type?: string;
32
+ tags?: string[] | null;
33
+ }
34
+ ];
35
+ }
36
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE;QACR;YACE,EAAE,EAAE,MAAM,CAAC;YACX,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;SACxB;KACF,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL2N1c3RvbWVyaW9fYXVkaWVuY2UvdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBdXRoT2JqZWN0IHtcbiAgYXBwQXBpS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2VnbWVudEJvZHkge1xuICBzZWdtZW50OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNlZ21lbnRSZXNwb25zZSB7XG4gIHNlZ21lbnQ6IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGRlZHVwbGljYXRlX2lkPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgc3RhdGU/OiBzdHJpbmc7XG4gICAgcHJvZ3Jlc3M/OiBudW1iZXIgfCBudWxsO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgdGFncz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTZWdtZW50c1Jlc3BvbnNlIHtcbiAgc2VnbWVudHM6IFtcbiAgICB7XG4gICAgICBpZDogbnVtYmVyO1xuICAgICAgZGVkdXBsaWNhdGVfaWQ/OiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgIHN0YXRlPzogc3RyaW5nO1xuICAgICAgcHJvZ3Jlc3M/OiBudW1iZXIgfCBudWxsO1xuICAgICAgdHlwZT86IHN0cmluZztcbiAgICAgIHRhZ3M/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export declare class RestError extends Error {
2
+ statusCode: number;
3
+ constructor(message: string, statusCode: number);
4
+ }
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/utils.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IAClC,UAAU,EAAE,MAAM,CAAC;gBAEP,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIhD"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RestError = void 0;
4
+ class RestError extends Error {
5
+ constructor(message, statusCode) {
6
+ super(message);
7
+ this.statusCode = statusCode;
8
+ }
9
+ }
10
+ exports.RestError = RestError;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9jdXN0b21lcmlvX2F1ZGllbmNlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsU0FBVSxTQUFRLEtBQUs7SUFHbEMsWUFBWSxPQUFlLEVBQUUsVUFBa0I7UUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBUEQsOEJBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUmVzdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBzdGF0dXNDb2RlOiBudW1iZXIpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
1
  import SFMC from './sfmc';
2
- export { SFMC };
2
+ import CustomerIOSegment from './customerio_audience';
3
+ export { SFMC, CustomerIOSegment };
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdks/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdks/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC"}
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SFMC = void 0;
6
+ exports.CustomerIOSegment = exports.SFMC = void 0;
7
7
  const sfmc_1 = __importDefault(require("./sfmc"));
8
8
  exports.SFMC = sfmc_1.default;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Rrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFakIsZUFGRixjQUFJLENBRUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU0ZNQyBmcm9tICcuL3NmbWMnO1xuXG5leHBvcnQgeyBTRk1DIH07XG4iXX0=
9
+ const customerio_audience_1 = __importDefault(require("./customerio_audience"));
10
+ exports.CustomerIOSegment = customerio_audience_1.default;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Rrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFHakIsZUFIRixjQUFJLENBR0U7QUFGYixnRkFBc0Q7QUFFdkMsNEJBRlIsNkJBQWlCLENBRVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU0ZNQyBmcm9tICcuL3NmbWMnO1xuaW1wb3J0IEN1c3RvbWVySU9TZWdtZW50IGZyb20gJy4vY3VzdG9tZXJpb19hdWRpZW5jZSc7XG5cbmV4cG9ydCB7IFNGTUMsIEN1c3RvbWVySU9TZWdtZW50IH07XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudderstack/integrations-lib",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "module": "build/index.js",