summaryrefslogtreecommitdiff
path: root/node_modules/@jet-app/app-store/tmp/src/foundation/metrics/buy-parameters.js
diff options
context:
space:
mode:
authorrxliuli <rxliuli@gmail.com>2025-11-04 05:03:50 +0800
committerrxliuli <rxliuli@gmail.com>2025-11-04 05:03:50 +0800
commitbce557cc2dc767628bed6aac87301a1be7c5431b (patch)
treeb51a051228d01fe3306cd7626d4a96768aadb944 /node_modules/@jet-app/app-store/tmp/src/foundation/metrics/buy-parameters.js
init commit
Diffstat (limited to 'node_modules/@jet-app/app-store/tmp/src/foundation/metrics/buy-parameters.js')
-rw-r--r--node_modules/@jet-app/app-store/tmp/src/foundation/metrics/buy-parameters.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/node_modules/@jet-app/app-store/tmp/src/foundation/metrics/buy-parameters.js b/node_modules/@jet-app/app-store/tmp/src/foundation/metrics/buy-parameters.js
new file mode 100644
index 0000000..a48e886
--- /dev/null
+++ b/node_modules/@jet-app/app-store/tmp/src/foundation/metrics/buy-parameters.js
@@ -0,0 +1,112 @@
+import { isNothing, isSome } from "@jet/environment/types/optional";
+/**
+ * An object which allows buy parameters to be operated on like a hash map.
+ */
+export class BuyParameters {
+ /**
+ * Create a buy parameters object with an optional string representation.
+ *
+ * @param buyParams A string containing buy parameters.
+ */
+ constructor(buyParams) {
+ this._values = {};
+ if (isSome(buyParams) && buyParams.length > 0) {
+ const pairs = buyParams.split("&");
+ for (const pair of pairs) {
+ const [encodedKey, encodedValue] = pair.split("=");
+ const key = decodeURIComponent(encodedKey);
+ const value = isNothing(encodedValue) ? "" : decodeURIComponent(encodedValue);
+ this._values[key] = value;
+ }
+ }
+ }
+ /**
+ * Determine the search key to use for the given parameters.
+ *
+ * @param key The key to determine the search value for.
+ * @param prefix An optional prefix to prepend to `key`.
+ * @returns A key which can be used to store and retrieve
+ * values in this buy parameters object.
+ */
+ _searchKey(key, prefix) {
+ if (key.length === 0) {
+ throw new Error("key may not be zero length");
+ }
+ if (isNothing(prefix) || prefix.length === 0) {
+ return key;
+ }
+ else {
+ return `${prefix}${key.charAt(0).toUpperCase()}${key.slice(1)}`;
+ }
+ }
+ /**
+ * Returns the value associated with a given key.
+ *
+ * @param key The key to retrieve the associated value for.
+ * @param keyPrefix The prefix to add to the key. Defaults to `mt`.
+ * @returns The value associated with `key`, or `undefined` is none is found.
+ */
+ get(key, keyPrefix = "mt") {
+ const searchKey = this._searchKey(key, keyPrefix);
+ return this._values[searchKey];
+ }
+ /**
+ * Add a given key-value pair to this buy parameters.
+ *
+ * If a value was previously associated with `key`,
+ * it will be replaced with `value`.
+ *
+ * @param key The key to associate `value` with in these buy parameters.
+ * @param value The value to add to the buy parameters. If value is `undefined`
+ * or `null`, any values previously associated with `key` will be removed.
+ * @param keyPrefix The prefix to add to the key. Defaults to `mt`.
+ * @returns `this`
+ */
+ set(key, value, keyPrefix = "mt") {
+ const searchKey = this._searchKey(key, keyPrefix);
+ if (isNothing(value)) {
+ delete this._values[searchKey];
+ }
+ else {
+ this._values[searchKey] = value;
+ }
+ return this;
+ }
+ /**
+ * Convert this buy parameters to its string representation.
+ */
+ toString() {
+ let buyParams = "";
+ for (const key of Object.keys(this._values)) {
+ const value = this._values[key];
+ if (buyParams.length > 0) {
+ buyParams += "&";
+ }
+ buyParams += encodeURIComponent(key);
+ buyParams += "=";
+ buyParams += encodeURIComponent(value);
+ }
+ return buyParams;
+ }
+ /**
+ * Convert the buy params into a map representation, in which
+ * the keys and values are encoded.
+ */
+ toEncodedMap() {
+ const map = {};
+ for (const key of Object.keys(this._values)) {
+ const value = this._values[key];
+ const encodedKey = encodeURIComponent(key);
+ const encodedValue = encodeURIComponent(value);
+ map[encodedKey] = encodedValue;
+ }
+ return map;
+ }
+ /**
+ * Buy params in a raw (non url encoded) map representation.
+ */
+ toRawMap() {
+ return { ...this._values };
+ }
+}
+//# sourceMappingURL=buy-parameters.js.map \ No newline at end of file