@schibsted/pulse-sdk 8.0.0-rc.12 → 8.0.0-rc.14
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/dist/cjs/Tracker.js +31 -1
- package/dist/cjs/leaveTrackingTpaas/index.js +18 -6
- package/dist/cjs/tpaas-builders/builders/device.js +1 -1
- package/dist/cjs/tpaas-builders/builders/trackerBuilder.js +2 -1
- package/dist/cjs/tpaas-builders/builders.js +10 -6
- package/dist/cjs/tpaas-schemas/constants.js +68 -51
- package/dist/cjs/version.js +1 -1
- package/dist/ejs/Tracker.js +32 -2
- package/dist/ejs/leaveTrackingTpaas/index.js +18 -6
- package/dist/ejs/tpaas-builders/builders/device.js +1 -1
- package/dist/ejs/tpaas-builders/builders/trackerBuilder.js +2 -1
- package/dist/ejs/tpaas-builders/builders.js +10 -7
- package/dist/ejs/tpaas-schemas/constants.js +66 -49
- package/dist/ejs/version.js +1 -1
- package/dist/types/Tracker.d.ts +14 -1
- package/dist/types/builders/consents.d.ts +2 -2
- package/dist/types/builders/device-node.d.ts +2 -2
- package/dist/types/builders/events-anonymous-node.d.ts +4 -4
- package/dist/types/builders/events-node.d.ts +5 -5
- package/dist/types/builders/objects/objects-anonymous-node.d.ts +1 -1
- package/dist/types/builders/objects/objects-node.d.ts +1 -1
- package/dist/types/builders/origin-node.d.ts +1 -1
- package/dist/types/cis-sync/storage/pulseStorage.d.ts +8 -4
- package/dist/types/config.d.ts +1 -1
- package/dist/types/tpaas-builders/builders/device.d.ts +1 -1
- package/dist/types/tpaas-builders/builders/experiments.d.ts +1 -1
- package/dist/types/tpaas-builders/builders/navigationType.d.ts +2 -2
- package/dist/types/tpaas-builders/builders/pageviewId.d.ts +1 -1
- package/dist/types/tpaas-builders/builders/trackerBuilder.d.ts +1 -1
- package/dist/types/tpaas-builders/builders/user.d.ts +1 -1
- package/dist/types/tpaas-builders/builders.d.ts +41 -39
- package/dist/types/tpaas-builders/index.d.ts +1 -1
- package/dist/types/tpaas-builders/types.d.ts +2 -0
- package/dist/types/tpaas-schemas/constants.d.ts +182 -174
- package/dist/types/tpaas-schemas/types/ITpaasEvent.d.ts +2 -0
- package/dist/types/tpaas-schemas/types/schemas/IEngagementAudio.d.ts +0 -6
- package/dist/types/tpaas-schemas/types/schemas/IEngagementTeaser.d.ts +9 -0
- package/dist/types/tpaas-schemas/types/schemas/IEngagementTvModule.d.ts +130 -0
- package/dist/types/tpaas-schemas/types/schemas/IEngagementUIElement.d.ts +4 -0
- package/dist/types/tpaas-schemas/types/schemas/IEngagementVideo.d.ts +1 -7
- package/dist/types/tpaas-schemas/types/schemas/IImpressionForm.d.ts +2 -2
- package/dist/types/tpaas-schemas/types/schemas/IImpressionTeaser.d.ts +9 -0
- package/dist/types/tpaas-schemas/types/schemas/ILeaveArticle.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/ILeaveAudioPage.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/ILeaveFrontpage.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/ILeaveLockedArticle.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/ILeaveVideoPage.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/IViewArticle.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/IViewAudioPage.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/IViewFrontpage.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/IViewLockedArticle.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/IViewVideoPage.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/schemas/index.d.ts +1 -0
- package/dist/types/tpaas-schemas/types/templates/IDevice.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/templates/IProvider.d.ts +1 -1
- package/dist/types/tpaas-schemas/types/templates/ISports.d.ts +40 -31
- package/dist/types/tpaas-schemas/types/templates/ITracker.d.ts +4 -0
- package/dist/types/tpaas-schemas/types.d.ts +3 -3
- package/dist/types/tracker-proxy/consts.d.ts +2 -2
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wrapper/types/event.d.ts +1 -1
- package/package.json +8 -7
package/dist/cjs/Tracker.js
CHANGED
|
@@ -114,6 +114,17 @@ const anonymousEvents = {
|
|
|
114
114
|
function getAnonymousEventBuilder(name) {
|
|
115
115
|
return name in anonymousEvents ? anonymousEvents[name] : anonymousEvents.trackerEvent;
|
|
116
116
|
}
|
|
117
|
+
// This looks overkill, but a mapping feels safer than doing string operations (capitalize) with javascript
|
|
118
|
+
const mapDeployStageToTpaasStage = (deployStage) => {
|
|
119
|
+
switch (deployStage) {
|
|
120
|
+
case 'dev':
|
|
121
|
+
return 'Dev';
|
|
122
|
+
case 'pre':
|
|
123
|
+
return 'Pre';
|
|
124
|
+
case 'pro':
|
|
125
|
+
return 'Pro';
|
|
126
|
+
}
|
|
127
|
+
};
|
|
117
128
|
/**
|
|
118
129
|
* Determines if the SDK is running in a Hybrid (WebView) environment.
|
|
119
130
|
*
|
|
@@ -291,6 +302,8 @@ class Tracker {
|
|
|
291
302
|
tpaasCollectorBaseUrl: config_browser_1.collectorEndpoints[deployStageTpaas],
|
|
292
303
|
trackerId: (0, uuid_1.v4)(),
|
|
293
304
|
vendors: config?.vendors?.length ? [] : ['xandr'],
|
|
305
|
+
useBeacon: true,
|
|
306
|
+
useBeaconWhenAvailable: true,
|
|
294
307
|
}, config);
|
|
295
308
|
// Move to default config?
|
|
296
309
|
this.builders = (0, utils_1.pulseMerge)({}, builders, {
|
|
@@ -522,6 +535,7 @@ class Tracker {
|
|
|
522
535
|
providerGroup: this.state.provider?.group,
|
|
523
536
|
component: this.state.component,
|
|
524
537
|
componentVersion: this.state.componentVersion,
|
|
538
|
+
routingStage: mapDeployStageToTpaasStage(this.state.deployStageTpaas),
|
|
525
539
|
experiments,
|
|
526
540
|
currentPageReferrer,
|
|
527
541
|
};
|
|
@@ -606,6 +620,7 @@ class Tracker {
|
|
|
606
620
|
component: this.state.component,
|
|
607
621
|
componentVersion: this.state.componentVersion,
|
|
608
622
|
pageviewId: this.state.pageViewId,
|
|
623
|
+
routingStage: mapDeployStageToTpaasStage(this.state.deployStageTpaas),
|
|
609
624
|
currentPage,
|
|
610
625
|
currentPageReferrer,
|
|
611
626
|
experiments,
|
|
@@ -1556,6 +1571,15 @@ class Tracker {
|
|
|
1556
1571
|
const event = (0, tpaas_builders_1.buildEngagementTeaserEvent)(input, dependencies);
|
|
1557
1572
|
return this.sendTpaasEvent(event);
|
|
1558
1573
|
}
|
|
1574
|
+
/**
|
|
1575
|
+
* @param input
|
|
1576
|
+
* @category TPaaS Tracking
|
|
1577
|
+
*/
|
|
1578
|
+
async trackEngagementTvModule(input) {
|
|
1579
|
+
const dependencies = await this.prepareTpaasEvent();
|
|
1580
|
+
const event = (0, tpaas_builders_1.buildEngagementTvModuleEvent)(input, dependencies);
|
|
1581
|
+
return this.sendTpaasEvent(event);
|
|
1582
|
+
}
|
|
1559
1583
|
/**
|
|
1560
1584
|
* @param input
|
|
1561
1585
|
* @category TPaaS Tracking
|
|
@@ -2330,12 +2354,18 @@ class Tracker {
|
|
|
2330
2354
|
async prepareQueuesAndSend(eventQueue, retryEventQueue) {
|
|
2331
2355
|
const promisesToBeSent = eventQueue.splice(0);
|
|
2332
2356
|
const eventsToBeSent = promisesToBeSent.map((p) => p.inputValue);
|
|
2333
|
-
const eventsToRetry = retryEventQueue;
|
|
2357
|
+
const eventsToRetry = retryEventQueue.splice(0);
|
|
2334
2358
|
eventQueue.length = 0;
|
|
2335
2359
|
retryEventQueue.length = 0;
|
|
2336
2360
|
const evaluatedEvents = await Promise.all(eventsToBeSent);
|
|
2337
2361
|
const url = this._getCollectorPath();
|
|
2338
2362
|
const data = [...evaluatedEvents, ...eventsToRetry];
|
|
2363
|
+
// in some cases, _sendImmediately executes an asynchronous operation (cisSync) after checking for empty array
|
|
2364
|
+
// due to that, it's still possible for this function to be called with an empty array, so we need to check for that again before sending
|
|
2365
|
+
// in order to avoid making an empty request to collector
|
|
2366
|
+
if (data.length === 0) {
|
|
2367
|
+
return [];
|
|
2368
|
+
}
|
|
2339
2369
|
// biome-ignore lint/suspicious/noExplicitAny: -
|
|
2340
2370
|
async function onFailedSend(response) {
|
|
2341
2371
|
// We retry an event once, but discard already retried events
|
|
@@ -57,7 +57,8 @@ let activityListeners = [];
|
|
|
57
57
|
let resizeObserver = null;
|
|
58
58
|
let throttledUpdateFn = (0, utils_1.throttle)(() => undefined, 0);
|
|
59
59
|
let durationStartTime = 0;
|
|
60
|
-
let
|
|
60
|
+
let previousActivityTime = 0;
|
|
61
|
+
let activityDurationMs = 0;
|
|
61
62
|
let currentLeaveEvent = (0, constants_1.DEFAULT_PAGE_LEAVE_EVENT)();
|
|
62
63
|
let additionalHeightBuilder;
|
|
63
64
|
/**
|
|
@@ -90,8 +91,9 @@ function addTpaasLeaveTracking({ objectElement, pageElement, schema, objectResiz
|
|
|
90
91
|
additionalHeightBuilder = heightBuilder;
|
|
91
92
|
addTpaasLeaveListeners();
|
|
92
93
|
addUpdateEventListeners(objectDomElement, pageDomElement, objectResizable);
|
|
93
|
-
|
|
94
|
+
previousActivityTime = resetTime();
|
|
94
95
|
durationStartTime = resetTime();
|
|
96
|
+
activityDurationMs = 0;
|
|
95
97
|
currentLeaveSchema = schema;
|
|
96
98
|
currentTrackMethod = trackMethod;
|
|
97
99
|
logger.debug('addLeaveTracking:after:state', currentLeaveEvent);
|
|
@@ -184,7 +186,8 @@ function removeUpdateEventListeners() {
|
|
|
184
186
|
const resetEventDefaults = () => {
|
|
185
187
|
currentLeaveEvent = (0, constants_1.DEFAULT_PAGE_LEAVE_EVENT)();
|
|
186
188
|
durationStartTime = resetTime();
|
|
187
|
-
|
|
189
|
+
previousActivityTime = resetTime();
|
|
190
|
+
activityDurationMs = 0;
|
|
188
191
|
};
|
|
189
192
|
const resetTpaasViewedContent = () => {
|
|
190
193
|
currentLeaveEvent = (0, constants_1.DEFAULT_PAGE_LEAVE_EVENT)();
|
|
@@ -223,11 +226,13 @@ function getTpaasLeaveObject() {
|
|
|
223
226
|
const endTime = Date.now();
|
|
224
227
|
// TPaaS leave event requires duration/activity to be at least 1ms, otherwise the event is rejected
|
|
225
228
|
// also, in practice, it's almost impossible to have an activity or duration of 0ms
|
|
229
|
+
// We don't call increaseActivityDuration here because it's possible to call getTpaasLeaveObject multiple times
|
|
230
|
+
// without any activity events in between, which would incorrectly increase the activity duration.
|
|
226
231
|
const durationMs = Math.max(endTime - durationStartTime, 1);
|
|
227
|
-
const
|
|
232
|
+
const lastActivityDuration = calculateActivityGap(endTime);
|
|
228
233
|
const leave = {
|
|
229
234
|
durationMs,
|
|
230
|
-
activityDurationMs,
|
|
235
|
+
activityDurationMs: Math.max(activityDurationMs + lastActivityDuration, 1),
|
|
231
236
|
...currentLeaveEvent,
|
|
232
237
|
};
|
|
233
238
|
logger.debug('trackTpaasLeave: event', leave);
|
|
@@ -314,9 +319,16 @@ function addUpdateActivityDurationListeners() {
|
|
|
314
319
|
types_1.BrowserEvents.TOUCHSTART,
|
|
315
320
|
];
|
|
316
321
|
activityListeners = addEventListeners(activityEvents, () => {
|
|
317
|
-
|
|
322
|
+
increaseActivityDuration(Date.now());
|
|
318
323
|
}, { passive: true });
|
|
319
324
|
}
|
|
325
|
+
function calculateActivityGap(activityEndTime) {
|
|
326
|
+
return Math.min(activityEndTime - previousActivityTime, constants_1.ACTIVITY_DURATION_LIMIT_MS);
|
|
327
|
+
}
|
|
328
|
+
function increaseActivityDuration(activityEndTime) {
|
|
329
|
+
activityDurationMs += calculateActivityGap(activityEndTime);
|
|
330
|
+
previousActivityTime = resetTime();
|
|
331
|
+
}
|
|
320
332
|
/*
|
|
321
333
|
Add listeners to a set of browser events.
|
|
322
334
|
*/
|
|
@@ -139,7 +139,7 @@ function getOperatingSystem(uaParser) {
|
|
|
139
139
|
if (osName.includes('windows')) {
|
|
140
140
|
return 'Windows';
|
|
141
141
|
}
|
|
142
|
-
if (osName.includes('macos')) {
|
|
142
|
+
if (osName.includes('macos') || osName.includes('mac os')) {
|
|
143
143
|
return 'Mac';
|
|
144
144
|
}
|
|
145
145
|
if (osName.includes('android')) {
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.builder = void 0;
|
|
4
|
-
const builder = (autoTrackerVersion, isHybrid, version) => {
|
|
4
|
+
const builder = ({ autoTrackerVersion, isHybrid, routingStage, version, }) => {
|
|
5
5
|
return {
|
|
6
6
|
tracker: {
|
|
7
7
|
autoTrackerVersion,
|
|
8
8
|
isAutoTracker: !!autoTrackerVersion,
|
|
9
9
|
isHybrid,
|
|
10
|
+
routingStage,
|
|
10
11
|
trackerType: 'JS',
|
|
11
12
|
version,
|
|
12
13
|
},
|
|
@@ -33,6 +33,7 @@ exports.buildEngagementAudioEvent = buildEngagementAudioEvent;
|
|
|
33
33
|
exports.buildEngagementFormEvent = buildEngagementFormEvent;
|
|
34
34
|
exports.buildEngagementOfferEvent = buildEngagementOfferEvent;
|
|
35
35
|
exports.buildEngagementTeaserEvent = buildEngagementTeaserEvent;
|
|
36
|
+
exports.buildEngagementTvModuleEvent = buildEngagementTvModuleEvent;
|
|
36
37
|
exports.buildEngagementUIElementEvent = buildEngagementUIElementEvent;
|
|
37
38
|
exports.buildEngagementVideoEvent = buildEngagementVideoEvent;
|
|
38
39
|
exports.buildEngagementVideoAdEvent = buildEngagementVideoAdEvent;
|
|
@@ -73,9 +74,9 @@ const utm_1 = require("./builders/utm");
|
|
|
73
74
|
* @private
|
|
74
75
|
*/
|
|
75
76
|
const getCommonBuildersOutput = (createdAt, dependencies, input) => {
|
|
76
|
-
const { autoTrackerVersion, isHybrid, version, environmentId, jwe, user, consents, providerId, providerName, providerGroup, component, componentVersion, pageviewId, currentPage, currentPageReferrer, } = dependencies;
|
|
77
|
+
const { autoTrackerVersion, isHybrid, version, environmentId, jwe, user, consents, providerId, providerName, providerGroup, component, componentVersion, pageviewId, currentPage, currentPageReferrer, routingStage, } = dependencies;
|
|
77
78
|
const { experiments } = input;
|
|
78
|
-
return (0, ts_deepmerge_1.merge)((0, trackerBuilder_1.builder)(autoTrackerVersion, isHybrid, version), (0, time_1.builder)(createdAt), (0, session_1.builder)(createdAt), (0, device_1.builder)(environmentId, jwe), (0, user_1.builder)(user), (0, baseEvent_1.builder)(), (0, consents_1.builder)(consents), (0, provider_1.builder)(providerId, component, componentVersion, providerName, providerGroup), (0, pageInfo_1.builder)(currentPage), (0, pageviewId_1.builder)(pageviewId), (0, utm_1.builder)(), (0, referrer_1.builder)(currentPageReferrer), (0, catalogVersion_1.builder)(), (0, experiments_1.builder)(dependencies.experiments, experiments));
|
|
79
|
+
return (0, ts_deepmerge_1.merge)((0, trackerBuilder_1.builder)({ autoTrackerVersion, isHybrid, version, routingStage }), (0, time_1.builder)(createdAt), (0, session_1.builder)(createdAt), (0, device_1.builder)(environmentId, jwe), (0, user_1.builder)(user), (0, baseEvent_1.builder)(), (0, consents_1.builder)(consents), (0, provider_1.builder)(providerId, component, componentVersion, providerName, providerGroup), (0, pageInfo_1.builder)(currentPage), (0, pageviewId_1.builder)(pageviewId), (0, utm_1.builder)(), (0, referrer_1.builder)(currentPageReferrer), (0, catalogVersion_1.builder)(), (0, experiments_1.builder)(dependencies.experiments, experiments));
|
|
79
80
|
};
|
|
80
81
|
exports.getCommonBuildersOutput = getCommonBuildersOutput;
|
|
81
82
|
// there's a bug in the ts-deepmerge library that doesn't properly resolve merging optionals with required properties
|
|
@@ -107,8 +108,8 @@ const normalizePageInput = (input) => {
|
|
|
107
108
|
// #region AnonymousView Event Builders
|
|
108
109
|
function buildAnonymousViewUIElementEvent(input, dependencies) {
|
|
109
110
|
const createdAt = new Date();
|
|
110
|
-
const { autoTrackerVersion, isHybrid, version, pageviewId, providerId, providerName, providerGroup, component, componentVersion, currentPageReferrer, } = dependencies;
|
|
111
|
-
return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.AnonymousViewUIElement, (0, baseEvent_1.builder)(), (0, trackerBuilder_1.builder)(autoTrackerVersion, isHybrid, version), (0, time_1.builder)(createdAt), (0, pageviewId_1.builder)(pageviewId), (0, utm_1.builder)(), (0, anonymous_1.builder)(), (0, provider_1.builder)(providerId, component, componentVersion, providerName, providerGroup), (0, referrer_1.builder)(currentPageReferrer), (0, experiments_1.builder)(dependencies.experiments, input.experiments), (0, catalogVersion_1.builder)(), normalizePageInput(input));
|
|
111
|
+
const { autoTrackerVersion, isHybrid, version, pageviewId, providerId, providerName, providerGroup, component, componentVersion, currentPageReferrer, routingStage, } = dependencies;
|
|
112
|
+
return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.AnonymousViewUIElement, (0, baseEvent_1.builder)(), (0, trackerBuilder_1.builder)({ autoTrackerVersion, isHybrid, version, routingStage }), (0, time_1.builder)(createdAt), (0, pageviewId_1.builder)(pageviewId), (0, utm_1.builder)(), (0, anonymous_1.builder)(), (0, provider_1.builder)(providerId, component, componentVersion, providerName, providerGroup), (0, referrer_1.builder)(currentPageReferrer), (0, experiments_1.builder)(dependencies.experiments, input.experiments), (0, catalogVersion_1.builder)(), normalizePageInput(input));
|
|
112
113
|
}
|
|
113
114
|
// #endregion
|
|
114
115
|
// #region View Event Builders
|
|
@@ -194,8 +195,8 @@ function buildLeaveVideoPageEvent(input, dependencies) {
|
|
|
194
195
|
}
|
|
195
196
|
function buildLeaveWeatherEvent(input, dependencies) {
|
|
196
197
|
const createdAt = new Date();
|
|
197
|
-
const { autoTrackerVersion, isHybrid, version, providerId, providerName, providerGroup, component, componentVersion, user, experiments, } = dependencies;
|
|
198
|
-
return (0, ts_deepmerge_1.merge)(normalizePageInput(input), tpaas_schemas_1.LeaveWeather, (0, time_1.builder)(createdAt), (0, trackerBuilder_1.builder)(autoTrackerVersion, isHybrid, version), (0, baseEvent_1.builder)(), (0, provider_1.builder)(providerId, component, componentVersion, providerName, providerGroup), (0, user_1.builder)(user), (0, experiments_1.builder)(experiments, input.experiments), (0, consents_1.builder)(dependencies.consents), (0, device_1.builder)(dependencies.environmentId, dependencies.jwe), (0, catalogVersion_1.builder)(), (0, navigationType_1.builder)(input.page?.navigationType), (0, pageviewId_1.builder)(dependencies.pageviewId), (0, pageInfo_1.builder)(dependencies.currentPage), (0, referrer_1.builder)(dependencies.currentPageReferrer));
|
|
198
|
+
const { autoTrackerVersion, isHybrid, version, providerId, providerName, providerGroup, component, componentVersion, user, experiments, routingStage, } = dependencies;
|
|
199
|
+
return (0, ts_deepmerge_1.merge)(normalizePageInput(input), tpaas_schemas_1.LeaveWeather, (0, time_1.builder)(createdAt), (0, trackerBuilder_1.builder)({ autoTrackerVersion, isHybrid, version, routingStage }), (0, baseEvent_1.builder)(), (0, provider_1.builder)(providerId, component, componentVersion, providerName, providerGroup), (0, user_1.builder)(user), (0, experiments_1.builder)(experiments, input.experiments), (0, consents_1.builder)(dependencies.consents), (0, device_1.builder)(dependencies.environmentId, dependencies.jwe), (0, catalogVersion_1.builder)(), (0, navigationType_1.builder)(input.page?.navigationType), (0, pageviewId_1.builder)(dependencies.pageviewId), (0, pageInfo_1.builder)(dependencies.currentPage), (0, referrer_1.builder)(dependencies.currentPageReferrer));
|
|
199
200
|
}
|
|
200
201
|
// #endregion
|
|
201
202
|
// #region Engagement Event Builders
|
|
@@ -211,6 +212,9 @@ function buildEngagementOfferEvent(input, dependencies) {
|
|
|
211
212
|
function buildEngagementTeaserEvent(input, dependencies) {
|
|
212
213
|
return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.EngagementTeaser, (0, exports.getCommonBuildersOutput)(new Date(), dependencies, input), normalizePageInput(input));
|
|
213
214
|
}
|
|
215
|
+
function buildEngagementTvModuleEvent(input, dependencies) {
|
|
216
|
+
return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.EngagementTvModule, (0, exports.getCommonBuildersOutput)(new Date(), dependencies, input), normalizePageInput(input));
|
|
217
|
+
}
|
|
214
218
|
function buildEngagementUIElementEvent(input, dependencies) {
|
|
215
219
|
return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.EngagementUIElement, (0, exports.getCommonBuildersOutput)(new Date(), dependencies, input), normalizePageInput(input));
|
|
216
220
|
}
|