summaryrefslogtreecommitdiff
path: root/node_modules/@jet/environment/metrics/helpers/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@jet/environment/metrics/helpers/util.js')
-rw-r--r--node_modules/@jet/environment/metrics/helpers/util.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/node_modules/@jet/environment/metrics/helpers/util.js b/node_modules/@jet/environment/metrics/helpers/util.js
new file mode 100644
index 0000000..00c739a
--- /dev/null
+++ b/node_modules/@jet/environment/metrics/helpers/util.js
@@ -0,0 +1,76 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.searchTermFromRefURL = exports.extractSiriRefAppFromRefURL = exports.idTypeForMetricsOptions = exports.targetTypeForMetricsOptions = void 0;
+const optional_1 = require("../../types/optional");
+const urls = require("../../util/urls");
+/**
+ * Returns click target type for given base metrics options.
+ * @param options - Base metrics options to derive click target type for.
+ */
+function targetTypeForMetricsOptions(options) {
+ let type = options.targetType;
+ if ((0, optional_1.isNothing)(type)) {
+ type = "lockup" /* MetricsClickTargetType.lockup */;
+ }
+ return type;
+}
+exports.targetTypeForMetricsOptions = targetTypeForMetricsOptions;
+/**
+ * Returns metrics ID type for given content metrics options.
+ * @param options - Content metrics options to derive metrics ID type for.
+ */
+function idTypeForMetricsOptions(options) {
+ let type = options.idType;
+ if ((0, optional_1.isNothing)(type)) {
+ type = "its_id" /* MetricsIDType.itsID */;
+ }
+ return type;
+}
+exports.idTypeForMetricsOptions = idTypeForMetricsOptions;
+/**
+ * Extract and return Siri reference app from URL string.
+ * @param refUrlString - URL string.
+ * @returns An optional Siri reference app string.
+ */
+function extractSiriRefAppFromRefURL(urlString) {
+ const refUrl = new urls.URL(urlString);
+ if ((0, optional_1.isNothing)(refUrl.query)) {
+ return null;
+ }
+ let extractedRefApp = null;
+ for (const key of Object.keys(refUrl.query)) {
+ if (key === "referrer") {
+ if (refUrl.query[key] === "siri") {
+ extractedRefApp = "com.apple.siri";
+ }
+ break;
+ }
+ }
+ return extractedRefApp;
+}
+exports.extractSiriRefAppFromRefURL = extractSiriRefAppFromRefURL;
+/**
+ * Extract and return search term from reference URL string.
+ * @param refUrlString - Reference URL string.
+ * @returns An optional search term string.
+ */
+function searchTermFromRefURL(refUrlString) {
+ const refUrl = new urls.URL(refUrlString);
+ const queryItems = refUrl.query;
+ if ((0, optional_1.isNothing)(queryItems)) {
+ return null;
+ }
+ const searchTerm = queryItems["term"];
+ const path = refUrl.pathname;
+ if ((0, optional_1.isNothing)(searchTerm) || (0, optional_1.isNothing)(path)) {
+ return null;
+ }
+ if (!path.endsWith("/search")) {
+ return null;
+ }
+ // the url object has already url-decoded this query parameter
+ const plainTerm = searchTerm;
+ return plainTerm;
+}
+exports.searchTermFromRefURL = searchTermFromRefURL;
+//# sourceMappingURL=util.js.map \ No newline at end of file