{"version":3,"file":"StringUtils.js","sources":["../../src/utils/StringUtils.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\n\n/**\n * @hidden\n */\nexport class StringUtils {\n\n /**\n * decode a JWT\n *\n * @param authToken\n */\n static decodeAuthToken(authToken: string): DecodedAuthToken {\n if (StringUtils.isEmpty(authToken)) {\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\n }\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\n const matches = tokenPartsRegex.exec(authToken);\n if (!matches || matches.length < 4) {\n throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\n }\n const crackedToken: DecodedAuthToken = {\n header: matches[1],\n JWSPayload: matches[2],\n JWSSig: matches[3]\n };\n return crackedToken;\n }\n\n /**\n * Check if a string is empty.\n *\n * @param str\n */\n static isEmpty(str?: string): boolean {\n return (typeof str === \"undefined\" || !str || 0 === str.length);\n }\n\n /**\n * Check if stringified object is empty\n * @param strObj \n */\n static isEmptyObj(strObj?: string): boolean {\n if (strObj && !StringUtils.isEmpty(strObj)) {\n try {\n const obj = JSON.parse(strObj);\n return Object.keys(obj).length === 0;\n } catch (e) {}\n }\n return true;\n }\n\n static startsWith(str: string, search: string): boolean {\n return str.indexOf(search) === 0;\n }\n\n static endsWith(str: string, search: string): boolean {\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\n }\n\n /**\n * Parses string into an object.\n *\n * @param query\n */\n static queryStringToObject(query: string): T {\n const obj: {} = {};\n const params = query.split(\"&\");\n const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\n params.forEach((pair) => {\n if (pair.trim()) {\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\n if (key && value) {\n obj[decode(key)] = decode(value);\n }\n }\n });\n return obj as T;\n }\n\n /**\n * Trims entries in an array.\n *\n * @param arr\n */\n static trimArrayEntries(arr: Array): Array {\n return arr.map(entry => entry.trim());\n }\n\n /**\n * Removes empty strings from array\n * @param arr\n */\n static removeEmptyStringsFromArray(arr: Array): Array {\n return arr.filter(entry => {\n return !StringUtils.isEmpty(entry);\n });\n }\n\n /**\n * Attempts to parse a string into JSON\n * @param str\n */\n static jsonParseHelper(str: string): T | null {\n try {\n return JSON.parse(str) as T;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n * @param input String to match against\n */\n static matchPattern(pattern: string, input: string): boolean {\n /**\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n */\n const regex: RegExp = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\n\n return regex.test(input);\n }\n}\n"],"names":[],"mappings":"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"}