@segment/action-destinations 3.328.0 → 3.330.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.
Files changed (98) hide show
  1. package/dist/destinations/accoil-analytics/group/generated-types.d.ts +2 -0
  2. package/dist/destinations/accoil-analytics/group/index.js +14 -0
  3. package/dist/destinations/accoil-analytics/group/index.js.map +1 -1
  4. package/dist/destinations/braze/trackEvent2/index.js +1 -1
  5. package/dist/destinations/braze/trackEvent2/index.js.map +1 -1
  6. package/dist/destinations/braze/trackPurchase2/index.js +1 -1
  7. package/dist/destinations/braze/trackPurchase2/index.js.map +1 -1
  8. package/dist/destinations/braze/updateUserProfile2/index.js +1 -1
  9. package/dist/destinations/braze/updateUserProfile2/index.js.map +1 -1
  10. package/dist/destinations/braze/utils.d.ts +19 -6
  11. package/dist/destinations/braze/utils.js +156 -32
  12. package/dist/destinations/braze/utils.js.map +1 -1
  13. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/apiLookups.d.ts +3 -3
  14. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/apiLookups.js +9 -9
  15. package/dist/destinations/engage-messaging-sendgrid/previewApiLookup/apiLookups.js.map +1 -1
  16. package/dist/destinations/engage-messaging-sendgrid/sendEmail/SendEmailPerformer.d.ts +2 -1
  17. package/dist/destinations/engage-messaging-sendgrid/sendEmail/SendEmailPerformer.js +14 -4
  18. package/dist/destinations/engage-messaging-sendgrid/sendEmail/SendEmailPerformer.js.map +1 -1
  19. package/dist/destinations/facebook-conversions-api/addToCart/generated-types.d.ts +3 -0
  20. package/dist/destinations/facebook-conversions-api/addToCart2/generated-types.d.ts +3 -0
  21. package/dist/destinations/facebook-conversions-api/custom/generated-types.d.ts +3 -0
  22. package/dist/destinations/facebook-conversions-api/custom2/generated-types.d.ts +3 -0
  23. package/dist/destinations/facebook-conversions-api/fb-capi-app-data.js +20 -2
  24. package/dist/destinations/facebook-conversions-api/fb-capi-app-data.js.map +1 -1
  25. package/dist/destinations/facebook-conversions-api/fb-capi-user-data.js +6 -0
  26. package/dist/destinations/facebook-conversions-api/fb-capi-user-data.js.map +1 -1
  27. package/dist/destinations/facebook-conversions-api/initiateCheckout/generated-types.d.ts +3 -0
  28. package/dist/destinations/facebook-conversions-api/initiateCheckout2/generated-types.d.ts +3 -0
  29. package/dist/destinations/facebook-conversions-api/pageView/generated-types.d.ts +3 -0
  30. package/dist/destinations/facebook-conversions-api/pageView2/generated-types.d.ts +3 -0
  31. package/dist/destinations/facebook-conversions-api/purchase/generated-types.d.ts +3 -0
  32. package/dist/destinations/facebook-conversions-api/purchase2/generated-types.d.ts +3 -0
  33. package/dist/destinations/facebook-conversions-api/search/generated-types.d.ts +3 -0
  34. package/dist/destinations/facebook-conversions-api/search2/generated-types.d.ts +3 -0
  35. package/dist/destinations/facebook-conversions-api/viewContent/generated-types.d.ts +3 -0
  36. package/dist/destinations/facebook-conversions-api/viewContent2/generated-types.d.ts +3 -0
  37. package/dist/destinations/google-enhanced-conversions/userList/index.js +1 -1
  38. package/dist/destinations/google-enhanced-conversions/userList/index.js.map +1 -1
  39. package/dist/destinations/index.js +2 -0
  40. package/dist/destinations/index.js.map +1 -1
  41. package/dist/destinations/optimizely-web/generated-types.d.ts +5 -0
  42. package/dist/destinations/optimizely-web/generated-types.js +3 -0
  43. package/dist/destinations/optimizely-web/generated-types.js.map +1 -0
  44. package/dist/destinations/optimizely-web/index.d.ts +4 -0
  45. package/dist/destinations/optimizely-web/index.js +49 -0
  46. package/dist/destinations/optimizely-web/index.js.map +1 -0
  47. package/dist/destinations/optimizely-web/trackEvent/client.d.ts +11 -0
  48. package/dist/destinations/optimizely-web/trackEvent/client.js +61 -0
  49. package/dist/destinations/optimizely-web/trackEvent/client.js.map +1 -0
  50. package/dist/destinations/optimizely-web/trackEvent/constants.d.ts +3 -0
  51. package/dist/destinations/optimizely-web/trackEvent/constants.js +7 -0
  52. package/dist/destinations/optimizely-web/trackEvent/constants.js.map +1 -0
  53. package/dist/destinations/optimizely-web/trackEvent/fields.d.ts +2 -0
  54. package/dist/destinations/optimizely-web/trackEvent/fields.js +193 -0
  55. package/dist/destinations/optimizely-web/trackEvent/fields.js.map +1 -0
  56. package/dist/destinations/optimizely-web/trackEvent/generated-types.d.ts +26 -0
  57. package/dist/destinations/optimizely-web/trackEvent/generated-types.js +3 -0
  58. package/dist/destinations/optimizely-web/trackEvent/generated-types.js.map +1 -0
  59. package/dist/destinations/optimizely-web/trackEvent/index.d.ts +5 -0
  60. package/dist/destinations/optimizely-web/trackEvent/index.js +15 -0
  61. package/dist/destinations/optimizely-web/trackEvent/index.js.map +1 -0
  62. package/dist/destinations/optimizely-web/trackEvent/types.d.ts +59 -0
  63. package/dist/destinations/optimizely-web/trackEvent/types.js +3 -0
  64. package/dist/destinations/optimizely-web/trackEvent/types.js.map +1 -0
  65. package/dist/destinations/optimizely-web/trackEvent/utils.d.ts +25 -0
  66. package/dist/destinations/optimizely-web/trackEvent/utils.js +156 -0
  67. package/dist/destinations/optimizely-web/trackEvent/utils.js.map +1 -0
  68. package/dist/destinations/s3/fields.js +1 -1
  69. package/dist/destinations/s3/functions.js +3 -2
  70. package/dist/destinations/s3/functions.js.map +1 -1
  71. package/dist/destinations/s3/index.js +6 -0
  72. package/dist/destinations/s3/index.js.map +1 -1
  73. package/dist/destinations/snap-audiences/generated-types.d.ts +8 -0
  74. package/dist/destinations/snap-audiences/generated-types.js +3 -0
  75. package/dist/destinations/snap-audiences/generated-types.js.map +1 -0
  76. package/dist/destinations/snap-audiences/index.d.ts +4 -0
  77. package/dist/destinations/snap-audiences/index.js +139 -0
  78. package/dist/destinations/snap-audiences/index.js.map +1 -0
  79. package/dist/destinations/snap-audiences/syncAudience/generated-types.d.ts +12 -0
  80. package/dist/destinations/snap-audiences/syncAudience/generated-types.js +3 -0
  81. package/dist/destinations/snap-audiences/syncAudience/generated-types.js.map +1 -0
  82. package/dist/destinations/snap-audiences/syncAudience/index.d.ts +5 -0
  83. package/dist/destinations/snap-audiences/syncAudience/index.js +156 -0
  84. package/dist/destinations/snap-audiences/syncAudience/index.js.map +1 -0
  85. package/dist/destinations/snap-audiences/syncAudience/utils.d.ts +8 -0
  86. package/dist/destinations/snap-audiences/syncAudience/utils.js +73 -0
  87. package/dist/destinations/snap-audiences/syncAudience/utils.js.map +1 -0
  88. package/dist/destinations/webhook-extensible/__test__/webhook.test.js +0 -67
  89. package/dist/destinations/webhook-extensible/__test__/webhook.test.js.map +1 -1
  90. package/dist/destinations/webhook-extensible/index.d.ts +4 -1
  91. package/dist/destinations/webhook-extensible/index.js +20 -9
  92. package/dist/destinations/webhook-extensible/index.js.map +1 -1
  93. package/dist/destinations/webhook-extensible/send/index.js +31 -3
  94. package/dist/destinations/webhook-extensible/send/index.js.map +1 -1
  95. package/dist/destinations/webhook-extensible/types.d.ts +6 -0
  96. package/dist/destinations/webhook-extensible/types.js +3 -0
  97. package/dist/destinations/webhook-extensible/types.js.map +1 -0
  98. package/package.json +4 -4
@@ -0,0 +1,49 @@
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 actions_core_1 = require("@segment/actions-core");
7
+ const trackEvent_1 = __importDefault(require("./trackEvent"));
8
+ const destination = {
9
+ name: 'Optimizely Web (Actions)',
10
+ slug: 'actions-optimizely-web',
11
+ mode: 'cloud',
12
+ authentication: {
13
+ scheme: 'custom',
14
+ fields: {
15
+ optimizelyApiKey: {
16
+ label: 'Optimizely API Key',
17
+ description: 'Your Optimizely API Key. TODO: Provide link to instructions on how to get this.',
18
+ type: 'password',
19
+ required: true
20
+ },
21
+ optimizelyAccountId: {
22
+ label: 'Optimizely Account ID',
23
+ description: 'Your Optimizely Account ID. TODO: Provide link to instructions on how to get this.',
24
+ type: 'string',
25
+ required: true
26
+ },
27
+ projectID: {
28
+ label: 'Optimizely Project ID',
29
+ description: 'The unique numeric identifier for the project.',
30
+ type: 'number',
31
+ required: true
32
+ }
33
+ }
34
+ },
35
+ presets: [
36
+ {
37
+ name: 'Send Custom Event or Page Event',
38
+ subscribe: 'type = "track" or type = "page"',
39
+ partnerAction: 'trackEvent',
40
+ mapping: actions_core_1.defaultValues(trackEvent_1.default.fields),
41
+ type: 'automatic'
42
+ }
43
+ ],
44
+ actions: {
45
+ trackEvent: trackEvent_1.default
46
+ }
47
+ };
48
+ exports.default = destination;
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/optimizely-web/index.ts"],"names":[],"mappings":";;;;;AACA,wDAAqD;AAGrD,8DAAqC;AAErC,MAAM,WAAW,GAAoC;IACnD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE,OAAO;IAEb,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,gBAAgB,EAAE;gBAChB,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,iFAAiF;gBAC9F,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI;aACf;YACD,mBAAmB,EAAE;gBACnB,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EAAE,oFAAoF;gBACjG,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;YACD,SAAS,EAAE;gBACT,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EAAE,gDAAgD;gBAC7D,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;SACF;KACF;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,iCAAiC;YACvC,SAAS,EAAE,iCAAiC;YAC5C,aAAa,EAAE,YAAY;YAC3B,OAAO,EAAE,4BAAa,CAAC,oBAAU,CAAC,MAAM,CAAC;YACzC,IAAI,EAAE,WAAW;SAClB;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAV,oBAAU;KACX;CACF,CAAA;AAED,kBAAe,WAAW,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { RequestClient } from '@segment/actions-core';
2
+ import { Settings } from '../generated-types';
3
+ import { EventItem, SendEventJSON, Type } from './types';
4
+ export declare class OptimizelyWebClient {
5
+ request: RequestClient;
6
+ settings: Settings;
7
+ constructor(request: RequestClient, settings: Settings);
8
+ getCustomEvents(type: Type): Promise<import("@segment/actions-core").ModifiedResponse<EventItem[]>>;
9
+ createCustomEvent(key: string, name: string, category: string, type: Type, edit_url?: string): Promise<import("@segment/actions-core").ModifiedResponse<EventItem>>;
10
+ sendEvent(body: SendEventJSON): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
11
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OptimizelyWebClient = void 0;
4
+ const actions_core_1 = require("@segment/actions-core");
5
+ const constants_1 = require("./constants");
6
+ class OptimizelyWebClient {
7
+ constructor(request, settings) {
8
+ ;
9
+ (this.request = request), (this.settings = settings);
10
+ }
11
+ async getCustomEvents(type) {
12
+ const url = type === constants_1.TRACK
13
+ ? `https://api.optimizely.com/v2/events?per_page=100&include_classic=false&project_id=${this.settings.projectID}`
14
+ : `https://api.optimizely.com/v2/pages?per_page=100&project_id=${this.settings.projectID}`;
15
+ return await this.request(url, {
16
+ method: 'GET',
17
+ headers: {
18
+ 'content-type': 'application/json',
19
+ accept: 'application/json',
20
+ authorization: `Bearer ${this.settings.optimizelyApiKey}`
21
+ }
22
+ });
23
+ }
24
+ async createCustomEvent(key, name, category, type, edit_url) {
25
+ const url = type === constants_1.TRACK
26
+ ? `https://api.optimizely.com/v2/projects/${this.settings.projectID}/custom_events`
27
+ : `https://api.optimizely.com/v2/pages`;
28
+ if (!edit_url && type === constants_1.PAGE) {
29
+ throw new actions_core_1.PayloadValidationError(`Page URL is required for Segment to create a page event in Optimizely`);
30
+ }
31
+ const json = {
32
+ key,
33
+ name: name,
34
+ category,
35
+ event_type: 'custom',
36
+ edit_url: type === constants_1.PAGE && edit_url ? edit_url : undefined,
37
+ project_id: type === constants_1.PAGE ? this.settings.projectID : undefined
38
+ };
39
+ return await this.request(url, {
40
+ method: 'POST',
41
+ json: json,
42
+ headers: {
43
+ 'content-type': 'application/json',
44
+ accept: 'application/json',
45
+ authorization: `Bearer ${this.settings.optimizelyApiKey}`
46
+ }
47
+ });
48
+ }
49
+ async sendEvent(body) {
50
+ return this.request('https://logx.optimizely.com/v1/events', {
51
+ method: 'POST',
52
+ json: body,
53
+ headers: {
54
+ 'content-type': 'application/json',
55
+ accept: 'application/json'
56
+ }
57
+ });
58
+ }
59
+ }
60
+ exports.OptimizelyWebClient = OptimizelyWebClient;
61
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/destinations/optimizely-web/trackEvent/client.ts"],"names":[],"mappings":";;;AAAA,wDAA6E;AAG7E,2CAAyC;AAEzC,MAAa,mBAAmB;IAI9B,YAAY,OAAsB,EAAE,QAAkB;QACpD,CAAC;QAAA,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAU;QAC9B,MAAM,GAAG,GACP,IAAI,KAAK,iBAAK;YACZ,CAAC,CAAC,sFAAsF,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACjH,CAAC,CAAC,+DAA+D,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC9F,OAAO,MAAM,IAAI,CAAC,OAAO,CAAc,GAAG,EAAE;YAC1C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;aAC1D;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,IAAY,EAAE,QAAgB,EAAE,IAAU,EAAE,QAAiB;QAChG,MAAM,GAAG,GACP,IAAI,KAAK,iBAAK;YACZ,CAAC,CAAC,0CAA0C,IAAI,CAAC,QAAQ,CAAC,SAAS,gBAAgB;YACnF,CAAC,CAAC,qCAAqC,CAAA;QAE3C,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,gBAAI,EAAE;YAC9B,MAAM,IAAI,qCAAsB,CAAC,uEAAuE,CAAC,CAAA;SAC1G;QAED,MAAM,IAAI,GAAG;YACX,GAAG;YACH,IAAI,EAAE,IAAI;YACV,QAAQ;YACR,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,IAAI,KAAK,gBAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC1D,UAAU,EAAE,IAAI,KAAK,gBAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SAChE,CAAA;QAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAY,GAAG,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAwC;YAC9C,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;aAC1D;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAmB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,uCAAuC,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAA;IACJ,CAAC;CACF;AA/DD,kDA+DC"}
@@ -0,0 +1,3 @@
1
+ export declare const PAGE = "page";
2
+ export declare const TRACK = "track";
3
+ export declare const SUPPORTED_TYPES: string[];
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUPPORTED_TYPES = exports.TRACK = exports.PAGE = void 0;
4
+ exports.PAGE = 'page';
5
+ exports.TRACK = 'track';
6
+ exports.SUPPORTED_TYPES = [exports.PAGE, exports.TRACK];
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/destinations/optimizely-web/trackEvent/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,MAAM,CAAA;AAEb,QAAA,KAAK,GAAG,OAAO,CAAA;AAEf,QAAA,eAAe,GAAG,CAAC,YAAI,EAAE,aAAK,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { InputField } from '@segment/actions-core';
2
+ export declare const fields: Record<string, InputField>;
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fields = void 0;
4
+ exports.fields = {
5
+ uuid: {
6
+ label: 'UUID',
7
+ description: 'Unique message UUID to send with the event',
8
+ type: 'string',
9
+ required: true,
10
+ default: { '@path': '$.messageId' }
11
+ },
12
+ endUserId: {
13
+ label: 'Optimizely End User ID',
14
+ description: "The unique identifier for the user. The value should be taken from the optimizelyEndUserId cookie, or it can be collected using window.optimizely.get('visitor').visitorId. If using the BYOID feature pass in the value of the ID for your user.",
15
+ type: 'string',
16
+ required: true,
17
+ default: {
18
+ '@if': {
19
+ exists: { '@path': '$.integrations.actions-optimizely-web.end_user_id' },
20
+ then: { '@path': '$.integrations.actions-optimizely-web.end_user_id' },
21
+ else: { '@path': '$.properties.end_user_id' }
22
+ }
23
+ }
24
+ },
25
+ anonymizeIP: {
26
+ label: 'Anonymize IP',
27
+ description: 'Anonymize the IP address of the user.',
28
+ type: 'boolean',
29
+ required: true,
30
+ default: true,
31
+ disabledInputMethods: ['enrichment', 'freeform', 'function', 'literal', 'variable']
32
+ },
33
+ eventMatching: {
34
+ label: 'Event Matching',
35
+ description: "Specify how Segment should match the Segment event to an Optimizely event, as well as specify if Segment should create new Custom Events and Pages in Optimizely if they don't exist.",
36
+ type: 'object',
37
+ required: true,
38
+ properties: {
39
+ createEventIfNotFound: {
40
+ label: 'Create If Not Found',
41
+ description: 'If needed, Segment can define new Custom Events and Pages in Optimizely. If you do not want Segment to create new events, select "Do not create".',
42
+ type: 'string',
43
+ required: true,
44
+ choices: [
45
+ { label: 'Do not create', value: 'DO_NOT_CREATE' },
46
+ { label: 'Create Custom Event', value: 'CREATE' }
47
+ ]
48
+ },
49
+ shouldSnakeCaseEventKey: {
50
+ label: 'Should Snake Case Event Key',
51
+ description: 'If the event key should be converted to snake case before sending to Optimizely.',
52
+ type: 'boolean',
53
+ required: true
54
+ },
55
+ eventKey: {
56
+ label: 'Event Key',
57
+ description: 'Optimizely event or page key to record the event against.',
58
+ type: 'string',
59
+ required: false,
60
+ default: { '@path': '$.event' }
61
+ },
62
+ eventId: {
63
+ label: 'Event ID',
64
+ description: 'Optimizely event or page ID to record the event against. The ID can only be used when the event / page has already been created in Optimizely. Segment cannot create new events in Optimizely using the ID.',
65
+ type: 'string',
66
+ required: false
67
+ }
68
+ },
69
+ default: {
70
+ createEventIfNotFound: 'CREATE',
71
+ shouldSnakeCaseEventKey: false,
72
+ eventKey: {
73
+ '@if': {
74
+ exists: { '@path': '$.event' },
75
+ then: { '@path': '$.event' },
76
+ else: { '@path': '$.name' }
77
+ }
78
+ },
79
+ eventId: { '@path': '$.properties.event_id' }
80
+ }
81
+ },
82
+ pageUrl: {
83
+ label: 'Page URL',
84
+ description: 'The URL of the page where the event occurred. Used if Segment creates a Page in Optimizely.',
85
+ type: 'string',
86
+ required: false,
87
+ default: { '@path': '$.context.page.url' }
88
+ },
89
+ category: {
90
+ label: 'Event Category',
91
+ description: 'Event Category',
92
+ type: 'string',
93
+ required: true,
94
+ choices: [
95
+ { label: 'add_to_cart', value: 'add_to_cart' },
96
+ { label: 'save', value: 'save' },
97
+ { label: 'search', value: 'search' },
98
+ { label: 'share', value: 'share' },
99
+ { label: 'purchase', value: 'purchase' },
100
+ { label: 'convert', value: 'convert' },
101
+ { label: 'sign_up', value: 'sign_up' },
102
+ { label: 'subscribe', value: 'subscribe' },
103
+ { label: 'other', value: 'other' }
104
+ ],
105
+ default: 'other'
106
+ },
107
+ timestamp: {
108
+ label: 'Timestamp',
109
+ description: 'Timestampt for when the event took place',
110
+ type: 'datetime',
111
+ required: true,
112
+ default: { '@path': '$.timestamp' }
113
+ },
114
+ eventType: {
115
+ label: 'Event Type',
116
+ description: 'The type of Segment event',
117
+ type: 'string',
118
+ unsafe_hidden: true,
119
+ required: true,
120
+ default: { '@path': '$.type' }
121
+ },
122
+ tags: {
123
+ label: 'Tags',
124
+ description: 'Tags to send with the event',
125
+ type: 'object',
126
+ required: false,
127
+ additionalProperties: true,
128
+ defaultObjectUI: 'keyvalue'
129
+ },
130
+ properties: {
131
+ label: 'Properties',
132
+ description: 'Additional properties to send with the event. Properties must be defined in Optimizely before they can be sent.',
133
+ type: 'object',
134
+ required: false,
135
+ additionalProperties: true,
136
+ defaultObjectUI: 'keyvalue',
137
+ properties: {
138
+ revenue: {
139
+ label: 'Revenue',
140
+ description: 'The revenue amount associated with this event For example, to represent $23.42, this field would be set to 23.42.',
141
+ type: 'number',
142
+ required: false
143
+ },
144
+ value: {
145
+ label: 'Value',
146
+ description: 'A scalar value associated with an event. This should be some non-revenue number.',
147
+ type: 'number',
148
+ required: false
149
+ },
150
+ quantity: {
151
+ label: 'Quantity',
152
+ description: 'An aggregatable "count" associated with this event; for example, a number of video views or items in a shopping cart.',
153
+ type: 'integer',
154
+ required: false
155
+ },
156
+ currency: {
157
+ label: 'Currency',
158
+ description: 'Currency code for revenue. Defaults to USD.',
159
+ type: 'string',
160
+ required: false,
161
+ default: 'USD'
162
+ }
163
+ },
164
+ default: {
165
+ revenue: {
166
+ '@path': '$.properties.revenue'
167
+ },
168
+ value: {
169
+ '@path': '$.properties.value'
170
+ },
171
+ quantity: {
172
+ '@path': '$.properties.quantity'
173
+ },
174
+ currency: {
175
+ '@path': '$.properties.currency'
176
+ }
177
+ }
178
+ },
179
+ sessionId: {
180
+ label: 'Session ID',
181
+ description: 'A unique identifier that identifies the session context, if any, for these events. If omitted, the Optimizely backend will calculate session-based results by inferring sessions by opening a session when an event is first received from a given visitor_id, and closing the session after 30 minutes with no events received for that visitor, with a maximum session size of 24 hours.',
182
+ type: 'string',
183
+ required: false,
184
+ default: {
185
+ '@if': {
186
+ exists: { '@path': '$.integrations.actions-optimizely-web.session_id' },
187
+ then: { '@path': '$.integrations.actions-optimizely-web.session_id' },
188
+ else: { '@path': '$.properties.session_id' }
189
+ }
190
+ }
191
+ }
192
+ };
193
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../src/destinations/optimizely-web/trackEvent/fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface Payload {
2
+ uuid: string;
3
+ endUserId: string;
4
+ anonymizeIP: boolean;
5
+ eventMatching: {
6
+ createEventIfNotFound: string;
7
+ shouldSnakeCaseEventKey: boolean;
8
+ eventKey?: string;
9
+ eventId?: string;
10
+ };
11
+ pageUrl?: string;
12
+ category: string;
13
+ timestamp: string | number;
14
+ eventType: string;
15
+ tags?: {
16
+ [k: string]: unknown;
17
+ };
18
+ properties?: {
19
+ revenue?: number;
20
+ value?: number;
21
+ quantity?: number;
22
+ currency?: string;
23
+ [k: string]: unknown;
24
+ };
25
+ sessionId?: string;
26
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/optimizely-web/trackEvent/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { ActionDefinition } from '@segment/actions-core';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ declare const action: ActionDefinition<Settings, Payload>;
5
+ export default action;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fields_1 = require("./fields");
4
+ const utils_1 = require("./utils");
5
+ const action = {
6
+ title: 'Track Event',
7
+ description: 'Send a Segment track or page event to Optimizely',
8
+ defaultSubscription: 'type = "track" or type = "page"',
9
+ fields: fields_1.fields,
10
+ perform: async (request, { payload, settings }) => {
11
+ return await utils_1.send(request, settings, payload);
12
+ }
13
+ };
14
+ exports.default = action;
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/optimizely-web/trackEvent/index.ts"],"names":[],"mappings":";;AAGA,qCAAiC;AACjC,mCAA8B;AAE9B,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,kDAAkD;IAC/D,mBAAmB,EAAE,iCAAiC;IACtD,MAAM,EAAN,eAAM;IACN,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChD,OAAO,MAAM,YAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { TRACK, PAGE } from './constants';
2
+ export interface SendEventJSON {
3
+ account_id: string;
4
+ project_id?: number;
5
+ anonymize_ip: boolean;
6
+ client_name: 'Segment Optimizely Web Destination';
7
+ client_version: string;
8
+ enrich_decisions: true;
9
+ visitors: Array<Visitor>;
10
+ }
11
+ export interface Visitor {
12
+ visitor_id: string;
13
+ session_id?: string;
14
+ attributes: [];
15
+ snapshots: Array<Snapshot>;
16
+ }
17
+ export interface Snapshot {
18
+ decisions: [];
19
+ events: Array<Event>;
20
+ }
21
+ export interface Event {
22
+ entity_id: string;
23
+ key?: string;
24
+ timestamp: UnixTimestamp13;
25
+ uuid: string;
26
+ type: EventType;
27
+ revenue?: number;
28
+ value?: number;
29
+ tags: {
30
+ quantity?: number;
31
+ currency?: string;
32
+ $opt_event_properties?: {
33
+ [key: string]: string | number | boolean;
34
+ };
35
+ [key: string]: string | number | {
36
+ [key: string]: string | number | boolean;
37
+ } | undefined;
38
+ };
39
+ }
40
+ export declare type EventType = 'view_activated' | 'other';
41
+ export declare type UnixTimestamp13 = number & {
42
+ __type: 'UnixTimestamp13';
43
+ };
44
+ export interface EventItem {
45
+ id: number;
46
+ key: string;
47
+ name: string;
48
+ }
49
+ export interface CreateEventJSON {
50
+ category: string;
51
+ event_type: string;
52
+ key: string;
53
+ name?: string;
54
+ }
55
+ export interface CreatePageJSON extends CreateEventJSON {
56
+ edit_url: string;
57
+ project_id: number;
58
+ }
59
+ export declare type Type = typeof TRACK | typeof PAGE;
@@ -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/destinations/optimizely-web/trackEvent/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { Payload } from './generated-types';
2
+ import { Settings } from '../generated-types';
3
+ import { RequestClient } from '@segment/actions-core';
4
+ import { UnixTimestamp13, EventItem, Type } from './types';
5
+ import { OptimizelyWebClient } from './client';
6
+ export declare function send(request: RequestClient, settings: Settings, payload: Payload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
7
+ export declare function validate(payload: Payload): {
8
+ unixTimestamp13: UnixTimestamp13;
9
+ restProperties: {
10
+ [k: string]: unknown;
11
+ };
12
+ value: number | undefined;
13
+ revenue: number | undefined;
14
+ quantity: number | undefined;
15
+ currency: string | undefined;
16
+ tags: {
17
+ [k: string]: unknown;
18
+ } | undefined;
19
+ };
20
+ export declare function areAllPropertiesPrimitive(obj: Record<string, unknown> | undefined, typesToCheck?: Array<'string' | 'boolean' | 'number'>): boolean;
21
+ export declare function getEventid(client: OptimizelyWebClient, payload: Payload): Promise<string>;
22
+ export declare function cleanKey(eventType: Type, shouldSnakeCaseEventKey: boolean, key?: string): string | undefined;
23
+ export declare function getEventFromCache(key: string): EventItem | undefined;
24
+ export declare function getEventsFromCache(): EventItem[];
25
+ export declare function ensureEventSchema(client: OptimizelyWebClient, key: string, name: string, category: string, type: Type, pageUrl?: string): Promise<EventItem>;