summaryrefslogtreecommitdiff
path: root/shared/metrics-8/node_modules/@jet/engine/lib
diff options
context:
space:
mode:
Diffstat (limited to 'shared/metrics-8/node_modules/@jet/engine/lib')
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/actions/action-dispatcher.js64
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/actions/index.js13
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/dependencies/index.js17
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-bag.js40
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-host.js19
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-network-fetch.js39
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-bundle.js68
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-json-object.js21
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/index.js15
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/index.js16
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-aggregator.js45
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-builder.js15
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-context.js2
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-provider.js2
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/index.js13
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/page-metrics-fields-provider.js19
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/index.js18
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/index.js13
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/metrics-event-linter.js2
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/metrics-pipeline.js35
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/index.js13
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/page-metrics-presenter.js51
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/index.js14
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/logging-event-recorder.js13
-rw-r--r--shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/metrics-event-recorder.js2
25 files changed, 569 insertions, 0 deletions
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/actions/action-dispatcher.js b/shared/metrics-8/node_modules/@jet/engine/lib/actions/action-dispatcher.js
new file mode 100644
index 0000000..1280b06
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/actions/action-dispatcher.js
@@ -0,0 +1,64 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ActionDispatcher = void 0;
+const optional_1 = require("@jet/environment/types/optional");
+class ActionDispatcher {
+ constructor(metricsPipeline) {
+ this.implementations = {};
+ this.metricsPipeline = metricsPipeline;
+ }
+ register(type, implementation) {
+ if (type in this.implementations) {
+ console.error(`An implementation is already registered for ${type}`);
+ }
+ this.implementations[type] = implementation;
+ }
+ async perform(action, metricsBehavior) {
+ if (!(action.$kind in this.implementations)) {
+ // 1. If there is no implementation registered for the type of action
+ // we were passed, we check for a chained dispatcher to forward to.
+ // If one is found, we forward this call without doing any work.
+ // If none is found, we give up.
+ if (optional_1.isSome(this.next)) {
+ return await this.next.perform(action, metricsBehavior);
+ }
+ else {
+ return "unsupported";
+ }
+ }
+ // 2. We have an implementation for the action we were given.
+ // We are responsible for processing metrics for that action.
+ this.processMetrics(action, metricsBehavior);
+ if (optional_1.isSome(this.next)) {
+ // 3a. If we have another dispatcher we are chained to, we forward to it
+ // if the implementation we have for the given action decides it cannot
+ // support performing it.
+ const outcome = await this.implementations[action.$kind](action);
+ if (outcome === "unsupported") {
+ return await this.next.perform(action, { behavior: "notProcessed" });
+ }
+ else {
+ return outcome;
+ }
+ }
+ else {
+ // 3b. We hand off control to the implementation we have for the given action type.
+ // If the implementation cannot perform the action, we give up.
+ return await this.implementations[action.$kind](action);
+ }
+ }
+ processMetrics(action, metricsBehavior) {
+ if (metricsBehavior.behavior === "notProcessed") {
+ return;
+ }
+ const actionMetrics = action.actionMetrics;
+ const context = {
+ customMetrics: actionMetrics.custom,
+ pageFields: metricsBehavior.context.pageFields,
+ };
+ action.actionMetrics.data.forEach((data) => {
+ this.metricsPipeline.process(data, context);
+ });
+ }
+}
+exports.ActionDispatcher = ActionDispatcher;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/actions/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/actions/index.js
new file mode 100644
index 0000000..303d3bb
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/actions/index.js
@@ -0,0 +1,13 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./action-dispatcher"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/index.js
new file mode 100644
index 0000000..c4bd837
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/index.js
@@ -0,0 +1,17 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./jet-bag"), exports);
+__exportStar(require("./jet-host"), exports);
+__exportStar(require("./jet-network-fetch"), exports);
+__exportStar(require("./localized-strings-bundle"), exports);
+__exportStar(require("./localized-strings-json-object"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-bag.js b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-bag.js
new file mode 100644
index 0000000..0ea378c
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-bag.js
@@ -0,0 +1,40 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.JetBag = void 0;
+class JetBag {
+ constructor(backing) {
+ this.backing = backing;
+ }
+ registerBagKeys() {
+ // do nothing.
+ }
+ string(key) {
+ const value = this.backing[key];
+ return typeof value === "string" || value === null ? value : undefined;
+ }
+ double(key) {
+ const value = this.backing[key];
+ return typeof value === "number" || value === null ? value : undefined;
+ }
+ integer(key) {
+ const value = this.backing[key];
+ return typeof value === "number" || value === null ? value : undefined;
+ }
+ boolean(key) {
+ const value = this.backing[key];
+ return typeof value === "boolean" || value === null ? value : undefined;
+ }
+ array(key) {
+ const value = this.backing[key];
+ return Array.isArray(value) || value === null ? value : undefined;
+ }
+ dictionary(key) {
+ const value = this.backing[key];
+ return typeof value === "object" ? value : undefined;
+ }
+ url(key) {
+ const value = this.backing[key];
+ return typeof value === "string" ? value : undefined;
+ }
+}
+exports.JetBag = JetBag;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-host.js b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-host.js
new file mode 100644
index 0000000..ed816b4
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-host.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.JetHost = void 0;
+class JetHost {
+ constructor(options) {
+ this.osBuild = "unknown";
+ this.deviceModel = "unknown";
+ this.deviceModelFamily = "unknown";
+ this.devicePhysicalModel = "unknown";
+ this.deviceLocalizedModel = "unknown";
+ this.clientIdentifier = "unknown";
+ this.clientVersion = "unknown";
+ this.platform = options.platform;
+ }
+ isOSAtLeast() {
+ return false;
+ }
+}
+exports.JetHost = JetHost;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-network-fetch.js b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-network-fetch.js
new file mode 100644
index 0000000..8330737
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-network-fetch.js
@@ -0,0 +1,39 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.JetNetworkFetch = void 0;
+const optional_1 = require("@jet/environment/types/optional");
+class JetNetworkFetch {
+ async fetch(request) {
+ var _a, _b, _c;
+ if (optional_1.isNothing(process === null || process === void 0 ? void 0 : process.env.MEDIA_API_TOKEN)) {
+ return await Promise.reject(new Error("process.env.MEDIA_API_TOKEN must be specified"));
+ }
+ const headers = {
+ ...((_a = request.headers) !== null && _a !== void 0 ? _a : {}),
+ authorization: `Bearer ${process === null || process === void 0 ? void 0 : process.env.MEDIA_API_TOKEN}`,
+ };
+ const response = await fetch(request.url, {
+ body: request.body,
+ method: (_b = request.method) !== null && _b !== void 0 ? _b : undefined,
+ cache: (_c = request.cache) !== null && _c !== void 0 ? _c : undefined,
+ headers: headers,
+ });
+ return {
+ ok: response.ok,
+ headers: Array.from(response.headers.keys()).reduce((previous, key) => {
+ const value = response.headers.get(key);
+ if (optional_1.isSome(value)) {
+ previous[key] = value;
+ }
+ return previous;
+ }, {}),
+ redirected: response.redirected,
+ status: response.status,
+ statusText: response.statusText,
+ url: response.url,
+ body: await response.text(),
+ metrics: [],
+ };
+ }
+}
+exports.JetNetworkFetch = JetNetworkFetch;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-bundle.js b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-bundle.js
new file mode 100644
index 0000000..0c4bf44
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-bundle.js
@@ -0,0 +1,68 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.LocalizedStringsBundle = void 0;
+const environment_1 = require("@jet/environment");
+const localized_strings_json_object_1 = require("./localized-strings-json-object");
+/**
+ * A localized string data source which loads strings from the application bundle.
+ *
+ * The bundle used by this data source can be a web app webpack bundle
+ * or a native app bundle bridged over to JS code.
+ */
+class LocalizedStringsBundle {
+ // MARK: - Initialization
+ /**
+ * Create localized strings bundle with all required attributes.
+ *
+ * @param bundle - The app bundle object.
+ */
+ constructor(bundle) {
+ this.bundle = bundle;
+ }
+ // MARK: - LocalizedStringsDataSource
+ async fetchStrings(language) {
+ var _a;
+ // Load the strings from bundle and cache them.
+ const localizations = this.bundle.localizationsProperty;
+ if (environment_1.isNothing(localizations)) {
+ throw new Error("Localized strings bundle index file is missing 'localizations' property");
+ }
+ let strings;
+ const format = (_a = localizations.format) !== null && _a !== void 0 ? _a : "json/inline" /* jsonInline */;
+ if (format === "json/inline" /* jsonInline */) {
+ const inlineLocalizations = localizations;
+ strings = inlineLocalizations[language];
+ }
+ else {
+ const externalLocalizations = localizations;
+ switch (externalLocalizations.format) {
+ case "json/multi-file" /* jsonMultiFile */:
+ {
+ // The path points to directory where JSON files are located.
+ // We don't even have to list a directory, just construct a final path.
+ // The path is also not an OS path but a bundle (e.g. JetPack) path.
+ // Bundle APIs always use "/" in the path, same as the paths used in the
+ // index.json (manifest) files.
+ const jsonPath = `${externalLocalizations.path}/${language}.json`;
+ strings = (await this.bundle.loadResource(jsonPath));
+ }
+ break;
+ case "json/single-file" /* jsonSingleFile */:
+ // The bundle contains single JSON file with all strings dictionary in it.
+ strings = (await this.bundle.loadResource(externalLocalizations.path))[language];
+ break;
+ case "loctable" /* loctable */:
+ throw new Error("Loctable format not supported in JS implementation");
+ case "js" /* js */:
+ throw new Error("Not yet implemented");
+ default:
+ throw new Error(`Unknown localization format: ${JSON.stringify(format)}`);
+ }
+ }
+ if (environment_1.isNothing(strings)) {
+ throw new Error(`Missing strings for ${language}`);
+ }
+ return new localized_strings_json_object_1.LocalizedStringsJSONObject(strings);
+ }
+}
+exports.LocalizedStringsBundle = LocalizedStringsBundle;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-json-object.js b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-json-object.js
new file mode 100644
index 0000000..eb7a9dd
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-json-object.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.LocalizedStringsJSONObject = void 0;
+/**
+ * A type providing access to underlying localized strings JSON object.
+ */
+class LocalizedStringsJSONObject {
+ /**
+ * Create localized strings JSON object.
+ *
+ * @param strings - A dictionary containing localized strings.
+ */
+ constructor(strings) {
+ this.strings = strings;
+ }
+ // MARK: - Localized Strings
+ string(key) {
+ return this.strings[key];
+ }
+}
+exports.LocalizedStringsJSONObject = LocalizedStringsJSONObject;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/index.js
new file mode 100644
index 0000000..624ce25
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/index.js
@@ -0,0 +1,15 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./actions"), exports);
+__exportStar(require("./dependencies"), exports);
+__exportStar(require("./metrics"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/index.js
new file mode 100644
index 0000000..e8d9f32
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/index.js
@@ -0,0 +1,16 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./metrics-fields-aggregator"), exports);
+__exportStar(require("./metrics-fields-builder"), exports);
+__exportStar(require("./metrics-fields-context"), exports);
+__exportStar(require("./metrics-fields-provider"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-aggregator.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-aggregator.js
new file mode 100644
index 0000000..b53d7a9
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-aggregator.js
@@ -0,0 +1,45 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MetricsFieldsAggregator = void 0;
+const optional_1 = require("@jet/environment/types/optional");
+const page_metrics_fields_provider_1 = require("../field-providers/page-metrics-fields-provider");
+class MetricsFieldsAggregator {
+ constructor() {
+ this.optInProviders = new Map();
+ this.optOutProviders = new Map();
+ }
+ static makeDefaultAggregator() {
+ const aggregator = new MetricsFieldsAggregator();
+ aggregator.addOptInProvider(new page_metrics_fields_provider_1.PageMetricsFieldsProvider(), "pageFields");
+ return aggregator;
+ }
+ addOptInProvider(provider, request) {
+ this.optInProviders.set(request, provider);
+ }
+ addOptOutProvider(provider, request) {
+ this.optOutProviders.set(request, provider);
+ }
+ removeOptInProvider(request) {
+ this.optInProviders.delete(request);
+ }
+ removeOptOutProvider(request) {
+ this.optOutProviders.delete(request);
+ }
+ addMetricsFields(options) {
+ options.including.forEach((request) => {
+ const provider = this.optInProviders.get(request);
+ if (optional_1.isNothing(provider)) {
+ // No provider registered
+ return;
+ }
+ provider.addMetricsFields(options.builder, options.context);
+ });
+ this.optOutProviders.forEach((provider, request) => {
+ if (optional_1.isNothing(provider) || options.excluding.includes(request)) {
+ return;
+ }
+ provider.addMetricsFields(options.builder, options.context);
+ });
+ }
+}
+exports.MetricsFieldsAggregator = MetricsFieldsAggregator;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-builder.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-builder.js
new file mode 100644
index 0000000..d00e47b
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-builder.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SimpleMetricsFieldsBuilder = void 0;
+class SimpleMetricsFieldsBuilder {
+ constructor(baseFields) {
+ this.fields = baseFields;
+ }
+ addValue(value, field) {
+ this.fields[field] = value;
+ }
+ get allMetricsFields() {
+ return this.fields;
+ }
+}
+exports.SimpleMetricsFieldsBuilder = SimpleMetricsFieldsBuilder;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-context.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-context.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-context.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-provider.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-provider.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-provider.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/index.js
new file mode 100644
index 0000000..250f6dc
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/index.js
@@ -0,0 +1,13 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./page-metrics-fields-provider"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/page-metrics-fields-provider.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/page-metrics-fields-provider.js
new file mode 100644
index 0000000..67e0f53
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/page-metrics-fields-provider.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.PageMetricsFieldsProvider = void 0;
+const optional_1 = require("@jet/environment/types/optional");
+class PageMetricsFieldsProvider {
+ addMetricsFields(builder, context) {
+ const pageFields = context.pageFields;
+ if (optional_1.isNothing(pageFields)) {
+ // No page fields
+ return;
+ }
+ for (const field in pageFields) {
+ if (Object.prototype.hasOwnProperty.call(pageFields, field)) {
+ builder.addValue(pageFields[field], field);
+ }
+ }
+ }
+}
+exports.PageMetricsFieldsProvider = PageMetricsFieldsProvider;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/index.js
new file mode 100644
index 0000000..469a960
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/index.js
@@ -0,0 +1,18 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./aggregating"), exports);
+__exportStar(require("./field-providers"), exports);
+__exportStar(require("./linting"), exports);
+__exportStar(require("./presenters"), exports);
+__exportStar(require("./metrics-pipeline"), exports);
+__exportStar(require("./recording"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/index.js
new file mode 100644
index 0000000..7fb1fcf
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/index.js
@@ -0,0 +1,13 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./metrics-event-linter"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/metrics-event-linter.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/metrics-event-linter.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/metrics-event-linter.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/metrics-pipeline.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/metrics-pipeline.js
new file mode 100644
index 0000000..ea32424
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/metrics-pipeline.js
@@ -0,0 +1,35 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MetricsPipeline = exports.FlushBehavior = void 0;
+const metrics_fields_builder_1 = require("./aggregating/metrics-fields-builder");
+// eslint-disable-next-line @typescript-eslint/no-shadow
+var FlushBehavior;
+(function (FlushBehavior) {
+ FlushBehavior[FlushBehavior["automatic"] = 0] = "automatic";
+ FlushBehavior[FlushBehavior["never"] = 1] = "never";
+})(FlushBehavior = exports.FlushBehavior || (exports.FlushBehavior = {}));
+class MetricsPipeline {
+ constructor(options) {
+ var _a;
+ this.aggregator = options.aggregator;
+ this.linter = options.linter;
+ this.recorder = options.recorder;
+ this.flushBehavior = (_a = options.flushBehavior) !== null && _a !== void 0 ? _a : FlushBehavior.automatic;
+ }
+ async process(data, context) {
+ const builder = new metrics_fields_builder_1.SimpleMetricsFieldsBuilder(data.fields);
+ this.aggregator.addMetricsFields({
+ including: data.includingFields,
+ excluding: data.excludingFields,
+ builder: builder,
+ context: context,
+ });
+ const lintedEvent = await this.linter.processEvent(builder.allMetricsFields);
+ this.recorder.record(lintedEvent, data.topic);
+ if (data.shouldFlush && this.flushBehavior === FlushBehavior.automatic) {
+ this.recorder.flush();
+ }
+ return lintedEvent;
+ }
+}
+exports.MetricsPipeline = MetricsPipeline;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/index.js
new file mode 100644
index 0000000..56e55cf
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/index.js
@@ -0,0 +1,13 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./page-metrics-presenter"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/page-metrics-presenter.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/page-metrics-presenter.js
new file mode 100644
index 0000000..c04bbd6
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/page-metrics-presenter.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.PageMetricsPresenter = void 0;
+const optional_1 = require("@jet/environment/types/optional");
+class PageMetricsPresenter {
+ constructor(metricsPipeline) {
+ this.metricsPipeline = metricsPipeline;
+ this.isViewAppeared = false;
+ }
+ set pageMetrics(pageMetrics) {
+ this.pageMetricsStore = pageMetrics;
+ if (optional_1.isSome(pageMetrics) && this.isViewAppeared) {
+ this.processInstructions("pageEnter");
+ }
+ }
+ get pageMetrics() {
+ return this.pageMetricsStore;
+ }
+ async processInstructions(invocationPoint) {
+ var _a, _b, _c;
+ if (optional_1.isNothing(this.pageMetrics)) {
+ return;
+ }
+ // istanbul ignore next
+ const invocationContext = {
+ customMetrics: (_a = this.baseContext) === null || _a === void 0 ? void 0 : _a.customMetrics,
+ pageFields: {
+ ...(_b = this.baseContext) === null || _b === void 0 ? void 0 : _b.pageFields,
+ ...(_c = this.pageMetrics) === null || _c === void 0 ? void 0 : _c.pageFields,
+ },
+ };
+ await Promise.all(this.pageMetrics.instructions.map((instruction) => {
+ const { invocationPoints } = instruction;
+ if (invocationPoints.length === 0 || !invocationPoints.includes(invocationPoint)) {
+ return;
+ }
+ return this.metricsPipeline.process(instruction.data, invocationContext);
+ }));
+ }
+ async didEnterPage() {
+ this.isViewAppeared = true;
+ if (optional_1.isSome(this.pageMetrics)) {
+ await this.processInstructions("pageEnter");
+ }
+ }
+ async didLeavePage() {
+ await this.processInstructions("pageExit");
+ this.isViewAppeared = false;
+ }
+}
+exports.PageMetricsPresenter = PageMetricsPresenter;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/index.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/index.js
new file mode 100644
index 0000000..dad3b1c
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/index.js
@@ -0,0 +1,14 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./logging-event-recorder"), exports);
+__exportStar(require("./metrics-event-recorder"), exports);
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/logging-event-recorder.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/logging-event-recorder.js
new file mode 100644
index 0000000..0e5ba43
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/logging-event-recorder.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.LoggingEventRecorder = void 0;
+class LoggingEventRecorder {
+ record(event) {
+ console.log(`Record Event [${String(event.fields.eventType)}]`, event);
+ }
+ async flush() {
+ console.log("Flushing");
+ return 0;
+ }
+}
+exports.LoggingEventRecorder = LoggingEventRecorder;
diff --git a/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/metrics-event-recorder.js b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/metrics-event-recorder.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/metrics-event-recorder.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });