From bce557cc2dc767628bed6aac87301a1be7c5431b Mon Sep 17 00:00:00 2001 From: rxliuli Date: Tue, 4 Nov 2025 05:03:50 +0800 Subject: init commit --- .../@jet/engine/lib/actions/action-dispatcher.js | 64 ++++++++++++++++++++ .../node_modules/@jet/engine/lib/actions/index.js | 13 +++++ .../@jet/engine/lib/dependencies/index.js | 17 ++++++ .../@jet/engine/lib/dependencies/jet-bag.js | 40 +++++++++++++ .../@jet/engine/lib/dependencies/jet-host.js | 19 ++++++ .../engine/lib/dependencies/jet-network-fetch.js | 39 +++++++++++++ .../lib/dependencies/localized-strings-bundle.js | 68 ++++++++++++++++++++++ .../dependencies/localized-strings-json-object.js | 21 +++++++ .../node_modules/@jet/engine/lib/index.js | 15 +++++ .../@jet/engine/lib/metrics/aggregating/index.js | 16 +++++ .../aggregating/metrics-fields-aggregator.js | 45 ++++++++++++++ .../metrics/aggregating/metrics-fields-builder.js | 15 +++++ .../metrics/aggregating/metrics-fields-context.js | 2 + .../metrics/aggregating/metrics-fields-provider.js | 2 + .../engine/lib/metrics/field-providers/index.js | 13 +++++ .../page-metrics-fields-provider.js | 19 ++++++ .../node_modules/@jet/engine/lib/metrics/index.js | 18 ++++++ .../@jet/engine/lib/metrics/linting/index.js | 13 +++++ .../lib/metrics/linting/metrics-event-linter.js | 2 + .../@jet/engine/lib/metrics/metrics-pipeline.js | 35 +++++++++++ .../@jet/engine/lib/metrics/presenters/index.js | 13 +++++ .../metrics/presenters/page-metrics-presenter.js | 51 ++++++++++++++++ .../@jet/engine/lib/metrics/recording/index.js | 14 +++++ .../metrics/recording/logging-event-recorder.js | 13 +++++ .../metrics/recording/metrics-event-recorder.js | 2 + 25 files changed, 569 insertions(+) create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/actions/action-dispatcher.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/actions/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/dependencies/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-bag.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-host.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/dependencies/jet-network-fetch.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-bundle.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/dependencies/localized-strings-json-object.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-aggregator.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-builder.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-context.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-provider.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/field-providers/page-metrics-fields-provider.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/linting/metrics-event-linter.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/metrics-pipeline.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/presenters/page-metrics-presenter.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/index.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/logging-event-recorder.js create mode 100644 shared/metrics-8/node_modules/@jet/engine/lib/metrics/recording/metrics-event-recorder.js (limited to 'shared/metrics-8/node_modules/@jet/engine/lib') 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 }); -- cgit v1.2.3