{ "version": 3, "sources": ["../../../../packages/util-core/util-typescript-type-guards/lib/primitive-types.js", "../../../../packages/util-core/util-typescript-type-guards/lib/array-checks.js", "../../../../packages/util-core/util-typescript-type-guards/lib/strings.js", "../../../../packages/util-core/util-typescript-type-guards/lib/tuple-array-utils/excludeFromTuple.js", "../../../../packages/util-core/util-typescript-type-guards/lib/html-elements.js", "../../../../packages/util-core/util-typescript-type-guards/lib/utils.js", "../../../../packages/util-core/util-typescript-type-guards/lib/nested-props.js", "../../../../packages/util-core/util-typescript-type-guards/lib/tuple-array-utils/mapArrayToProp.js", "../../../../packages/util-core/util-typescript-type-guards/lib/tuple-array-utils/uniqueTupleValues.js", "../../../../packages/util-core/util-typescript-type-guards/lib/tuple-array-utils/convertArrayToPropIndexedObj.js", "../../../../src/assets/mcui-js/utils/check-local-storage-available.ts", "../../../../src/assets/mcui-js/utils/Logger/LoggerTags.ts", "../../../../src/assets/mcui-js/utils/Logger/WindowConsole.ts", "../../../../src/assets/mcui-js/utils/Logger/LoggerStyles.ts", "../../../../src/assets/mcui-js/utils/Logger/LoggerBinding.ts", "../../../../src/assets/mcui-js/utils/Logger/Logger.ts", "../../../../src/assets/mcui-js/marketo/base-form-logger.ts"], "sourcesContent": ["// The type definitions for this file are purposefully updated by hand in types.d.ts\n\nlet objToString = (value) => {\n return Object.prototype.toString.call(value);\n};\n\nexport function isNull (value) {\n return value === null;\n}\n\nexport function isUndefined(value) {\n // eslint-disable-next-line no-undefined\n return value === undefined;\n}\n\nexport function isNil (value) {\n return (value ?? null) === null;\n}\n\nexport function isNotNil(value) {\n return isNil(value) === false;\n}\n\nexport function isString (value) {\n return isNotNil(value) && (typeof value === 'string' || objToString(value) === '[object String]');\n}\n\nexport function isSymbol(value) {\n return typeof value === \"symbol\";\n}\n\nexport function isObject (value) {\n return isNotNil(value) && (typeof value === 'object');\n}\n\n\nexport function isFunction(value) {\n return isNotNil(value) && ((typeof value === 'function') || (objToString(value) === '[object Function]') || (value instanceof Function));\n}\n\nexport function isRegExp (value) {\n return isNotNil(value) && (objToString(value) === '[object RegExp]' || (value instanceof RegExp));\n}\n\nexport function isBoolean (value) {\n return isNotNil(value) && (objToString(value) === '[object Boolean]' || (value instanceof Boolean));\n}\n\nexport function isNumber(value) {\n return typeof value === 'number' || (isObject(value) && objToString(value) === '[object Number]');\n}\n\nexport function hasPropertyWithType(value, prop, typeCheckFn) {\n return isObject(value) && (prop in value) && typeCheckFn(value[prop]);\n}\n\n\nexport function isPropertyKey(value) {\n return isNotNil(value) && (isString(value) || isNumber(value) || isSymbol(value));\n}", "import { isString } from \"./primitive-types.js\";\n\n// The type definitions for this file are purposefully updated by hand in types.d.ts\n\nexport function isArray(value) {\n return Array.isArray(value);\n}\n\nexport function isNotArray(value) {\n return isArray(value) === false;\n}\n\nexport function isSingleItemArray(value) {\n return isArray(value) && value.length === 1;\n}\n\nexport function isMultiItemArray(value) {\n return isArray(value) && value.length > 1;\n}\n\nexport function isArrayOfType(value, typeCheckFunc) {\n return isArray(value) && value.every(typeCheckFunc) === true;\n}\nexport function isStringArray(value) {\n return isArrayOfType(value, isString);\n}", "import { isArray } from \"./array-checks.js\";\nimport { isNil, isString } from \"./primitive-types.js\";\n\nexport function convertCamelToKebabCase(str) {\n return str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, (x, sep) => (sep ? \"-\" : \"\") + x.toLowerCase());\n}\n\nexport function convertKebabToCamelCase(str) {\n return str.replace(/-./g, (x) => x[1].toUpperCase());\n}\n\nexport function convertToPascalCase(str) {\n return str\n .replace(/[ _-]([^ _-])/g, x => x[1].toUpperCase()) // Capitalize char after space, -, or _\n .replace(/[^.]/, x => x[0].toUpperCase()); // Capitalize first char\n}\n\nexport function isEmptyString(value) {\n return value === \"\";\n}\n\nexport function isNilOrEmptyString(value) {\n return isNil(value) || isEmptyString(value);\n}\n\nexport function isStringLiteralOfType(value, possibleValues) {\n return isArray(possibleValues) && isString(value) && possibleValues.includes(value);\n}", "\nexport function excludeFrom(arr, ...exclusions) {\n const result = arr.filter((a) => !exclusions.includes(a));\n return Object.isFrozen(arr) ? Object.freeze(result) : result;\n}", "import { isObject } from \"./primitive-types.js\";\n\nexport function isAnyHTMLInputElementType(value) {\n return isObject(value) && (\n (value instanceof HTMLButtonElement) ||\n (value instanceof HTMLInputElement) ||\n (value instanceof HTMLSelectElement) ||\n (value instanceof HTMLTextAreaElement));\n}", "/** @import { reverseObjectMapOfArrayIndices, fromEntriesTyped } './utils.d.ts' */\n\nimport { numbersFromZeroToMaxTuple } from \"./numbersFromZeroToMax.js\";\nimport { isFunction, isNil, isObject, isPropertyKey, isString } from \"./primitive-types.js\";\nimport { convertKebabToCamelCase, isEmptyString } from \"./strings.js\";\n\n\n/** @type { fromEntriesTyped } */\nexport function fromEntriesTyped(entries) {\n return Object.fromEntries(entries);\n}\n\n\n/**\n * @param {unknown} value \n * @returns {[...number[]]}\n */\nexport function getTupleIndicesTuple(value) {\n if (\"length\" in value) {\n return numbersFromZeroToMaxTuple(value.length);\n }\n return [];\n}\n\n/** @type {reverseObjectMapOfArrayIndices} */\nexport function reverseObjectMapOfArrayIndices(value) {\n const tupleIndices = getTupleIndicesTuple(value);\n const reversedKeyObj = tupleIndices.reduce((result, idx) => {\n const valAtIdx = value[idx];\n if (!isPropertyKey(valAtIdx)) {\n throw new Error(`Value at index is not a valid property key: ${valAtIdx ?? ''}`);\n }\n result[valAtIdx] = idx;\n return result;\n }, {});\n return reversedKeyObj;\n}\nexport function createReverseObjectMap(value) {\n if (isObject(value)) {\n const keys = Object.keys(value);\n return Object.fromEntries(\n keys.map(k => {\n const val = value[k];\n return [val, k];\n })\n );\n }\n throw new Error(\"Parameter 'value' is not an object\");\n}\n\nexport function exhaustiveGuard(value, message = \"ERROR! Reached forbidden guard function with unexpected value\") {\n throw new Error(`${message}: ${JSON.stringify(value)}`);\n}\n\nexport function createEnumFromKeys(keys, camelCaseProps = true) {\n camelCaseProps ??= true;\n return keys.reduce((result, key) => {\n const k = (camelCaseProps ? convertKebabToCamelCase(key) : key);\n result[k] = key;\n return result;\n }, {});\n}\n\nexport function getTypedObjectKeys(obj) {\n return Object.keys(obj);\n}\n\n\nfunction checkIsNilOrWhitespaceAfterTrim(value) {\n return (isNil(value) || (isString(value) && isEmptyString(value.trim())));\n}\nexport function defaultIfNilOrWhiteSpace(value, ...options) {\n if (checkIsNilOrWhitespaceAfterTrim(value) === false) {\n return value;\n }\n const numDefaults = options.length;\n // eslint-disable-next-line no-undef-init\n let returnVal = undefined;\n for (let i = 0; i < numDefaults; i++){\n let curOptions = options[i];\n let { getter, defaultValue } = curOptions;\n returnVal = isFunction(getter) ? getter() : defaultValue; \n if (checkIsNilOrWhitespaceAfterTrim(returnVal) === false) {\n break;\n }\n }\n return returnVal;\n}\n\n", "\n\n\nexport function getValueFromPropsPath(item, path, valueIfPathInvalid) {\n let curValue = item;\n for (const prop of path) {\n if (prop in curValue) {\n curValue = item[prop];\n }\n else {\n return valueIfPathInvalid;\n }\n }\n return curValue;\n}", "import { getValueFromPropsPath } from \"../nested-props.js\";\n\nexport function mapArrayToProp(array, prop) {\n return array.map((el) => {\n return el[prop];\n });\n}\n\nexport function flatMapArrayToProp(array, prop) {\n return array.flatMap((el) => {\n return el[prop];\n });\n}\n\nexport function mapArrayToNestedProp(array, path, defaultIfNever) {\n return array.map((el) => {\n return getValueFromPropsPath(el, path, defaultIfNever);\n });\n}\n\nexport function flatMapArrayToNestedProp(array, path, defaultIfNever) {\n return array.flatMap((el) => {\n return getValueFromPropsPath(el, path, defaultIfNever);\n });\n}", "\nexport function uniqueTupleValues(array) {\n return array.filter((v, i) => {\n return i === array.indexOf(v);\n });\n}", "import { getValueFromPropsPath } from \"../nested-props.js\";\n\n/** @type {import(\"./convertArrayToPropIndexedObj.d.ts\").convertArrayToPropIndexedObject } */\nexport function convertArrayToPropIndexedObject (array, indexBy) {\n const propIndexedObj = array.reduce((result, item) => {\n const propValue = item[indexBy];\n return Object.assign(result, { [propValue]: item });\n }, {});\n return propIndexedObj;\n}\n\n\n/** @type {import(\"./convertArrayToPropIndexedObj.d.ts\").convertArrayToDeepPropIndexedObject } */\nexport function convertArrayToDeepPropIndexedObject(array, indexByPath) {\n return array.reduce((result, item) => {\n const propValue = getValueFromPropsPath(item, indexByPath, []);\n if (Array.isArray(propValue)) {\n return Object.assign(result, propValue.reduce((innerResult, key) => {\n return Object.assign(innerResult, { [key]: item });\n }, {}));\n }\n else {\n return Object.assign(result, { [propValue]: item });\n }\n }, {});\n}", "import type { Nil } from \"@mcwd/typescript-type-guards\";\r\n\r\nexport function checkLocalStorageAvailable() {\r\n let storage: typeof window[\"localStorage\"] | Nil = null;\r\n try {\r\n storage = window.localStorage;\r\n const x = \"__storage_test__\";\r\n storage.setItem(x, x);\r\n storage.removeItem(x);\r\n return true;\r\n } catch (e) {\r\n return (\r\n e instanceof DOMException &&\r\n // everything except Firefox\r\n (e.code === 22 ||\r\n // Firefox\r\n e.code === 1014 ||\r\n // test name field too, because code might not be present\r\n // everything except Firefox\r\n e.name === \"QuotaExceededError\" ||\r\n // Firefox\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\") &&\r\n // acknowledge QuotaExceededError only if there's something already stored\r\n storage &&\r\n storage.length !== 0\r\n );\r\n }\r\n}", "import { isNil, isNull, isUndefined, isObject, isString, isStringArray, type Nil } from \"@mcwd/typescript-type-guards\";\r\nimport type { ILogger } from \"./ILogger.js\";\r\nimport { checkLocalStorageAvailable } from \"../check-local-storage-available.js\";\r\n\r\n\r\nexport type TagsRecord<T extends (string | string[] | null) = string[]> = Record<string, T>;\r\n\r\nfunction parseTagsObjFromLocalStorage(propName: string, localStorageTagsString: string): TagsRecord<string[] | null> | Nil {\r\n try {\r\n const localStorageTags = JSON.parse(localStorageTagsString) as unknown;\r\n if (isObject(localStorageTags)) {\r\n const localStorageTagKeys = Object.keys(localStorageTags);\r\n if (localStorageTagKeys.length > 0 && localStorageTagKeys.every(k => (isStringArray(localStorageTags[k]) || isNull(localStorageTags[k])))) {\r\n return (localStorageTags as TagsRecord<string[] | null>);\r\n }\r\n }\r\n }\r\n catch {\r\n window.localStorage.removeItem(propName);\r\n }\r\n return null;\r\n}\r\nfunction readPropFromLocalStorage(propName: string): TagsRecord<string[] | null> | Nil {\r\n try {\r\n if (checkLocalStorageAvailable()) {\r\n const localStorageTagsString = window.localStorage.getItem(propName);\r\n if (isString(localStorageTagsString)) {\r\n return parseTagsObjFromLocalStorage(propName, localStorageTagsString);\r\n }\r\n }\r\n }\r\n catch { return null; }\r\n return null;\r\n}\r\n\r\nfunction saveValueToLocalStorage(propName: string, value: TagsRecord<string[] | null>, saveToLocalStorage: boolean) {\r\n try {\r\n if (saveToLocalStorage && Object.keys(value).length > 0 && checkLocalStorageAvailable()) {\r\n window.localStorage.setItem(propName, JSON.stringify(value));\r\n }\r\n }\r\n // eslint-disable-next-line no-empty\r\n catch { }\r\n}\r\n\r\nfunction removeValueFromLocalStorage(propName: string) {\r\n try {\r\n if (checkLocalStorageAvailable()) {\r\n window.localStorage.removeItem(propName);\r\n }\r\n }\r\n // eslint-disable-next-line no-empty\r\n catch { }\r\n}\r\n\r\ntype MergeTagsFunction<T extends string[] | string | null> = (key: string, valOne: T | undefined, valTwo: T | undefined) => T | undefined;\r\nfunction mergeTagsObjects<T extends string[] | string | null>(tagsObjOne: TagsRecord<T>, tagsObjTwo: TagsRecord<T>, mergeFunc: MergeTagsFunction<T>) {\r\n const allKeys = [... new Set([...Object.keys(tagsObjOne), ...Object.keys(tagsObjTwo)])];\r\n if (allKeys.length > 0) {\r\n const newTagsObj: TagsRecord<T> = {};\r\n for (const key of allKeys) {\r\n const propMergeRes = mergeFunc(key, tagsObjOne[key], tagsObjTwo[key]);\r\n if (isUndefined(propMergeRes) === false) {\r\n newTagsObj[key] = propMergeRes as Exclude<T, undefined>;\r\n }\r\n }\r\n return newTagsObj;\r\n }\r\n return {};\r\n}\r\n\r\nfunction mergeInitialWithLocalStorageValue(initialValue: TagsRecord<string[]>, localStorageVal: TagsRecord<string[] | null>, removeExtraTagsFromInitial: boolean) {\r\n return mergeTagsObjects<string[] | null>(initialValue, localStorageVal, (key, valOne, valTwo) => {\r\n if (isUndefined(valTwo) === false) {\r\n if (isStringArray(valOne) && isStringArray(valTwo)) {\r\n if (removeExtraTagsFromInitial) {\r\n return valOne.filter(el => valTwo.includes(el));\r\n }\r\n else {\r\n return [... new Set([...valOne, ...valTwo])];\r\n }\r\n }\r\n return valTwo as string[] | null;\r\n }\r\n return valOne as undefined | string[];\r\n });\r\n}\r\n\r\nfunction definePropOnWindow(propName: string, removeExtraTagsFromInitial: boolean) {\r\n const propDescriptor = Object.getOwnPropertyDescriptor(window, propName);\r\n const initialValue = ((isObject(propDescriptor) && propDescriptor.writable)\r\n ? window[propName]\r\n : {}) as TagsRecord<string[]>;\r\n\r\n if (isNil(propDescriptor) || propDescriptor.writable) {\r\n const localStorageVal = readPropFromLocalStorage(propName);\r\n const mergedValue: TagsRecord<string[] | null> = isObject(localStorageVal)\r\n ? mergeInitialWithLocalStorageValue(initialValue, localStorageVal, removeExtraTagsFromInitial)\r\n : initialValue;\r\n Object.defineProperty(window, propName, {\r\n value: { ...mergedValue },\r\n writable: false,\r\n configurable: false,\r\n enumerable: true\r\n });\r\n }\r\n}\r\n\r\ndefinePropOnWindow(\"__loggerFilteredTags\", false);\r\ndefinePropOnWindow(\"__loggerFilteredTagsOverride\", true);\r\n\r\ntype WindowWithLoggerFilters = typeof window & {\r\n __loggerFilteredTags: TagsRecord<string[] | null>,\r\n __loggerFilteredTagsOverride: TagsRecord<string[] | null>,\r\n __loggerFilter: {\r\n getLoggerFilter: typeof getLoggerFilter, // eslint-disable-line no-use-before-define\r\n addLoggerFilter: typeof addLoggerFilter, // eslint-disable-line no-use-before-define\r\n removeLoggerFilter: typeof removeLoggerFilter // eslint-disable-line no-use-before-define\r\n getLoggerFilterOverride: typeof getLoggerFilterOverride, // eslint-disable-line no-use-before-define\r\n addLoggerFilterOverride: typeof addLoggerFilterOverride, // eslint-disable-line no-use-before-define\r\n removeLoggerFilterOverride: typeof removeLoggerFilterOverride // eslint-disable-line no-use-before-define\r\n }\r\n}\r\n\r\nfunction parseTagsObj<T extends string | string[] | null>(obj: TagsRecord<T>): TagsRecord<string[] | null> {\r\n const objKeys = Object.keys(obj);\r\n for (const k of objKeys) {\r\n if (isString(obj[k])) {\r\n obj[k] = [obj[k]] as T;\r\n }\r\n if ((isStringArray(obj[k]) || isNull(obj[k])) === false) {\r\n console.error(`Tags obj array for prop \"${k}\" is not null or a string array! Removing values!`, obj[k]);\r\n delete obj[k];\r\n }\r\n }\r\n return obj as TagsRecord<string[] | null>;\r\n}\r\n\r\nfunction addTagsToTagsObj(obj: TagsRecord<string | string[] | null>, newTags: TagsRecord<string | string[] | null>) {\r\n const newKeys = Object.keys(newTags);\r\n for (const k of newKeys) {\r\n if (isString(newTags[k])) {\r\n newTags[k] = [newTags[k]] as string[];\r\n }\r\n if (newTags[k] === null) {\r\n obj[k] = null;\r\n }\r\n else {\r\n if (isString(obj[k])) {\r\n obj[k] = [obj[k]] as string[];\r\n }\r\n obj[k] ??= [];\r\n const tagsToAdd = (newTags[k] as string[]).filter(t => (obj[k] as string[]).includes(t) === false);\r\n obj[k] = [...(obj[k] as string[]), ...tagsToAdd];\r\n }\r\n }\r\n}\r\n\r\nfunction removeTagsFromTagsObj(obj: TagsRecord<null | string | string[]>, tagsToRemove: string | TagsRecord<null | string | string[]>) {\r\n if (isString(tagsToRemove)) {\r\n delete obj[tagsToRemove];\r\n }\r\n else {\r\n const keys = Object.keys(tagsToRemove);\r\n for (const k of keys) {\r\n const tagsToRemoveVal = [tagsToRemove[k]].flat();\r\n if (isString(obj[k])) {\r\n obj[k] = [obj[k] as string];\r\n }\r\n if (isNull(obj[k])) {\r\n if (isNull(tagsToRemove[k])) {\r\n delete obj[k];\r\n }\r\n continue;\r\n }\r\n obj[k] = (obj[k] as string[]).filter(item => (tagsToRemoveVal.includes(item) === false));\r\n }\r\n }\r\n}\r\n\r\nexport function getLoggerFilter(): TagsRecord<string[] | null> {\r\n const dTags = (window as WindowWithLoggerFilters).__loggerFilteredTags;\r\n return { ...parseTagsObj(dTags) };\r\n}\r\n\r\nexport function addLoggerFilter(filteredTags: TagsRecord<null | string | string[]>, saveToLocalStorage: boolean) {\r\n const dTags = (window as WindowWithLoggerFilters).__loggerFilteredTags;\r\n addTagsToTagsObj(dTags, filteredTags);\r\n saveValueToLocalStorage(\"__loggerFilteredTags\", dTags, saveToLocalStorage);\r\n}\r\n\r\nexport function removeLoggerFilter(tagName: string): void;\r\nexport function removeLoggerFilter(tagsToRemove: TagsRecord<string | string[] | null>): void;\r\nexport function removeLoggerFilter(tagsToRemove: string | TagsRecord<string | string[] | null>): void;\r\nexport function removeLoggerFilter(tagsToRemove: string | TagsRecord<string | string[] | null>): void {\r\n const dTags = (window as WindowWithLoggerFilters).__loggerFilteredTags;\r\n removeTagsFromTagsObj(dTags, tagsToRemove);\r\n saveValueToLocalStorage(\"__loggerFilteredTags\", dTags, true);\r\n}\r\n\r\nexport function getLoggerFilterOverride(): TagsRecord<string[] | null> {\r\n const overrides = (window as WindowWithLoggerFilters).__loggerFilteredTagsOverride;\r\n return { ...parseTagsObj(overrides) } as TagsRecord<string[] | null>;\r\n}\r\n\r\nexport function addLoggerFilterOverride(filteredTagsOverride: TagsRecord<string | string[] | null>, saveToLocalStorage: boolean) {\r\n const overrides = (window as WindowWithLoggerFilters).__loggerFilteredTagsOverride;\r\n addTagsToTagsObj(overrides, filteredTagsOverride);\r\n saveValueToLocalStorage(\"__loggerFilteredTagsOverride\", overrides, saveToLocalStorage);\r\n}\r\n\r\nexport function removeLoggerFilterOverride(tagName: string);\r\nexport function removeLoggerFilterOverride(tagsToRemove: TagsRecord<string | string[] | null>);\r\nexport function removeLoggerFilterOverride(tagsToRemove: string | TagsRecord<string | string[] | null>);\r\nexport function removeLoggerFilterOverride(tagsToRemove: string | TagsRecord<string | string[] | null>) {\r\n const overrides = (window as WindowWithLoggerFilters).__loggerFilteredTagsOverride;\r\n removeTagsFromTagsObj(overrides, tagsToRemove);\r\n saveValueToLocalStorage(\"__loggerFilteredTagsOverride\", overrides, true);\r\n}\r\n\r\nexport function resetLoggerFilter() {\r\n const dTags = (window as WindowWithLoggerFilters).__loggerFilteredTags;\r\n const keys = Object.keys(dTags);\r\n\r\n for (const k of keys) {\r\n delete dTags[k];\r\n }\r\n removeValueFromLocalStorage(\"__loggerFilteredTags\");\r\n\r\n const overrides = (window as WindowWithLoggerFilters).__loggerFilteredTagsOverride;\r\n const oKeys = Object.keys(overrides);\r\n for (const k of oKeys) {\r\n delete overrides[k];\r\n }\r\n removeValueFromLocalStorage(\"__loggerFilteredTagsOverride\");\r\n}\r\n\r\nexport function checkLoggerIsFiltered(logger: ILogger):boolean {\r\n const tags = logger.tags;\r\n const filteredTags = getLoggerFilter();\r\n const overrides = getLoggerFilterOverride();\r\n return Object.keys(tags).some(k => {\r\n const tagVal: string[] = [tags[k]].flat();\r\n const filteredVal: string[] = filteredTags[k] ?? [];\r\n const overrideVal: string[] = (overrides[k]) ?? [];\r\n if (overrideVal.includes(\"*\") || tagVal.some(t => overrideVal.includes(t))) {\r\n return false;\r\n }\r\n return filteredVal.includes(\"*\") || tagVal.some(t => filteredVal.includes(t));\r\n });\r\n}\r\n\r\n(window as WindowWithLoggerFilters).__loggerFilter = Object.freeze({\r\n getLoggerFilter,\r\n addLoggerFilter: (filteredTags: TagsRecord<null | string | string[]>, saveToLocalStorage = true) => addLoggerFilter(filteredTags, saveToLocalStorage),\r\n removeLoggerFilter,\r\n getLoggerFilterOverride,\r\n addLoggerFilterOverride: (filteredTagsOverride: TagsRecord<null | string | string[]>, saveToLocalStorage = true) => addLoggerFilterOverride(filteredTagsOverride, saveToLocalStorage),\r\n removeLoggerFilterOverride\r\n});", "export const WindowConsole = window.console;\r\nexport type WindowConsole = typeof WindowConsole;\r\n\r\nexport type WindowConsoleFunctionKeys = {\r\n [K in keyof WindowConsole]: (WindowConsole[K] extends (...args: any[]) => any ? K : never);\r\n}[keyof WindowConsole];\r\n\r\nexport const ConsoleLoggingLevels = [\"debug\", \"info\", \"warn\", \"error\"] as const;\r\nexport type ConsoleLoggingLevels = typeof ConsoleLoggingLevels[number];\r\n\r\nexport const BasicConsoleFnKeys = [\"debug\", \"dirxml\", \"error\", \"group\", \"groupCollapsed\", \"info\", \"log\", \"trace\", \"warn\"] as const;\r\nexport type BasicConsoleFnKeys = typeof BasicConsoleFnKeys[number];", "import { isNotNil, isObject, isString } from \"@mcwd/typescript-type-guards\";\r\nimport type { LoggerCss } from \"./LoggerCss.js\";\r\nimport { ConsoleLoggingLevels } from \"./WindowConsole.js\";\r\n\r\nexport function getStringFromStyleObject(stylesObj: LoggerCss) {\r\n let cssStyles = \"\";\r\n\r\n for (const styleProp of Object.keys(stylesObj)) {\r\n cssStyles += `${styleProp}: ${stylesObj[styleProp] as string};`;\r\n }\r\n return cssStyles;\r\n}\r\n\r\nexport const BasicButtonLabelStyle = Object.freeze({\r\n color: \"white\",\r\n \"font-size\": \"10px\",\r\n \"line-height\": \"10px\",\r\n \"font-family\": \"'Helvetica', 'Arial', sans-serif\",\r\n padding: \"3px\",\r\n \"margin-right\": \"5px\",\r\n \"border-radius\": \"3px\",\r\n border: \"1px solid black\",\r\n} as const) satisfies LoggerCss;\r\n\r\nconst LoggerLevelColors = {\r\n info: \"#40F99B\",\r\n debug: \"#6EF9F5\",\r\n warn: \"#FBB13C\",\r\n error: \"#D64933\"\r\n} as const satisfies Record<ConsoleLoggingLevels, string>;\r\n\r\nconst LoggerLevelLabelStyle: LoggerCss = Object.freeze({\r\n \"border-radius\": \"3px\",\r\n \"background\": \"#282828\",\r\n \"font-family\": `\"Courier New\", Courier, \"Lucida Sans Typewriter\", \"Lucida Typewriter\", monospace`,\r\n \"font-size\": \"10px\",\r\n \"padding\": \"2px\",\r\n \"margin-right\": \"5px\"\r\n});\r\n\r\nexport function getLevelLabelStyle(level: ConsoleLoggingLevels): string {\r\n const color = LoggerLevelColors[level] ?? \"white\";\r\n return getStringFromStyleObject({ ... LoggerLevelLabelStyle, color });\r\n}\r\n\r\nexport function getStyledMessageArgs({ level, messages, styles, formattingSuffix }: {\r\n level: ConsoleLoggingLevels,\r\n messages: string[],\r\n styles: LoggerCss[],\r\n formattingSuffix?: string | undefined\r\n}): string[]\r\n{\r\n formattingSuffix ??= \"\";\r\n let firstArg = \"\";\r\n const remainingArgsArr: string[] = [];\r\n\r\n if (ConsoleLoggingLevels.includes(level)) {\r\n firstArg += \"%c%s\";\r\n remainingArgsArr.push(getLevelLabelStyle(level));\r\n remainingArgsArr.push(level);\r\n }\r\n\r\n const argLengthDifference = messages.length - styles.length;\r\n if (argLengthDifference < -1) {\r\n throw new Error(\"Too many LoggerCss objects provided\");\r\n }\r\n \r\n const maxMessagesOrStyles = Math.max(messages.length, styles.length);\r\n for (let i = 0; i < maxMessagesOrStyles; i++) {\r\n const msg = (messages.length >= i) ? messages[i] : null;\r\n const styleObj = (styles.length >= i) ? styles[i] : null;\r\n const styleCss = isObject(styleObj) ? getStringFromStyleObject(styleObj) : null;\r\n if (isNotNil(styleCss)) {\r\n firstArg += \"%c\";\r\n remainingArgsArr.push(styleCss);\r\n }\r\n if (isString(msg)) {\r\n firstArg += \"%s\";\r\n remainingArgsArr.push(msg);\r\n }\r\n }\r\n return [firstArg + formattingSuffix, ...remainingArgsArr];\r\n}", "import type { ILogger } from \"./ILogger.js\";\r\nimport { getStyledMessageArgs } from \"./LoggerStyles.js\";\r\nimport { WindowConsole, type ConsoleLoggingLevels, type WindowConsoleFunctionKeys } from \"./WindowConsole.js\";\r\n\r\nexport function getLoggerPrefixArgs(logger: ILogger, level: ConsoleLoggingLevels): string[] {\r\n return getStyledMessageArgs({ level, messages: [... logger.prefixes], styles: [... logger.prefixStyles] });\r\n}\r\n\r\nexport function getConsoleFn<TFnName extends WindowConsoleFunctionKeys>(fnName: TFnName): WindowConsole[TFnName] {\r\n if (fnName in WindowConsole) {\r\n return WindowConsole[fnName];\r\n }\r\n else {\r\n throw new Error(`${fnName} is NOT a function`);\r\n }\r\n}\r\n\r\nexport function getBoundConsoleFn<TFnName extends WindowConsoleFunctionKeys>(fnName: TFnName, ...args: any[]): WindowConsole[TFnName] {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n return getConsoleFn(fnName).bind(WindowConsole, ...args);\r\n}", "import type { LoggerCss } from \"./LoggerCss.js\";\r\nimport { addLoggerFilter, checkLoggerIsFiltered, getLoggerFilter, getLoggerFilterOverride, addLoggerFilterOverride, resetLoggerFilter, removeLoggerFilter, type TagsRecord } from \"./LoggerTags.js\";\r\nimport type { LoggerTags } from \"./LoggerTagsType.js\";\r\nimport type { ILogger } from \"./ILogger.js\";\r\nimport type { LoggerFnBindArgs } from \"./LoggerBindingTypes.js\";\r\nimport { getBoundConsoleFn, getLoggerPrefixArgs } from \"./LoggerBinding.js\";\r\nimport { isObject, isString } from \"@mcwd/typescript-type-guards\";\r\nimport { ConsoleLoggingLevels, BasicConsoleFnKeys, WindowConsole, type WindowConsoleFunctionKeys } from \"./WindowConsole.js\";\r\nimport { BasicButtonLabelStyle, getStyledMessageArgs } from \"./LoggerStyles.js\";\r\n\r\nfunction getBoundLoggerFnOrNoop<TFnName extends WindowConsoleFunctionKeys>(logger: ILogger, fnName: TFnName, ...args: any[]) {\r\n if ((BasicConsoleFnKeys as readonly string[]).includes(fnName)) {\r\n const level = ConsoleLoggingLevels.includes(fnName as ConsoleLoggingLevels) ? fnName as ConsoleLoggingLevels : \"info\";\r\n logger = logger.withTags({ level, logFn: fnName });\r\n }\r\n else {\r\n logger = logger.withTags({ logFn: fnName });\r\n }\r\n \r\n if (logger.checkLoggerIsFiltered()) {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n return (() => {});\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n return getBoundConsoleFn(fnName, ...args);\r\n}\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nfunction getBoundLoggerFnFromPrefixArgs<TFnName extends BasicConsoleFnKeys>(logger: ILogger, fnName: TFnName) {\r\n const level = (ConsoleLoggingLevels as readonly string[]).includes(fnName) ? fnName as ConsoleLoggingLevels : \"info\";\r\n return getBoundLoggerFnOrNoop(logger, fnName, ... getLoggerPrefixArgs(logger, level));\r\n}\r\n\r\nexport class Logger implements ILogger {\r\n #prefixes: string[];\r\n #prefixStyles: LoggerCss[];\r\n #tags: LoggerTags;\r\n\r\n static #allUsedTags: TagsRecord<string[]> = {};\r\n \r\n static #addToUsedTags(tags: LoggerTags) {\r\n for (const k of Object.keys(tags)) {\r\n if (!(k in this.#allUsedTags)) {\r\n Logger.#allUsedTags[k] = [];\r\n }\r\n tags[k] = (isString(tags[k]) ? [tags[k]] : tags[k]) as string[];\r\n for (const item of tags[k]){\r\n if (Logger.#allUsedTags[k].includes(item) === false) {\r\n Logger.#allUsedTags[k].push(item);\r\n }\r\n }\r\n }\r\n }\r\n\r\n static get allUsedTags() {\r\n return Logger.#allUsedTags;\r\n }\r\n\r\n constructor({ tags, prefixStrings, prefixStyles }: { tags: LoggerTags, prefixStrings?: string[], prefixStyles?: LoggerCss[] }) {\r\n this.#tags = { ...tags };\r\n this.#prefixes = prefixStrings ?? [];\r\n this.#prefixStyles = prefixStyles ?? [];\r\n Logger.#addToUsedTags(tags);\r\n }\r\n\r\n /** Used to toggle loggers on and off globally when any of the tag values matches what is enabled/disabled globally */\r\n get tags(): LoggerTags {\r\n return { ... this.#tags };\r\n }\r\n\r\n get prefixes() {\r\n return Object.freeze([... this.#prefixes]);\r\n }\r\n\r\n get prefixStyles() {\r\n return Object.freeze([... this.#prefixStyles]);\r\n }\r\n\r\n static getFilters(): TagsRecord<string | string[] | null> {\r\n return getLoggerFilter();\r\n }\r\n\r\n static addFilters(filteredTags: TagsRecord<string | string[] | null>) {\r\n addLoggerFilter(filteredTags, true);\r\n }\r\n\r\n static removeFilters(tagsToRemove: string | TagsRecord<string | string[] | null>) {\r\n removeLoggerFilter(tagsToRemove);\r\n }\r\n\r\n /**\r\n * filtered tag overrides are used to remove specific tags from the logger filters when a wildcard is used\r\n */\r\n static getFilterOverrides(): TagsRecord<string[] | null> {\r\n return getLoggerFilterOverride();\r\n }\r\n\r\n /**\r\n * filtered tag overrides are used to remove specific tags from the logger filters when a wildcard is used\r\n */\r\n static setFilterOverrides(filteredTagsOverride: TagsRecord<string | string[] | null>) {\r\n addLoggerFilterOverride(filteredTagsOverride, true);\r\n }\r\n\r\n checkLoggerIsFiltered() {\r\n return checkLoggerIsFiltered(this);\r\n }\r\n\r\n static resetLoggerFilter() {\r\n resetLoggerFilter();\r\n }\r\n\r\n withTags(tags: Record<string, string>) {\r\n return new Logger({\r\n tags: { ...this.tags, ...tags },\r\n prefixStrings: [...this.prefixes],\r\n prefixStyles: [...this.prefixStyles]\r\n });\r\n }\r\n\r\n getChildLogger({ tags, prefixStrings, prefixStyles }: { tags?: Record<string, string>, prefixStrings?: string[], prefixStyles?: LoggerCss[] } = {}) {\r\n return new Logger({\r\n tags: { ...this.tags, ...(tags ?? {}) },\r\n prefixStrings: [...this.#prefixes, ... (prefixStrings ?? [])],\r\n prefixStyles: [...this.#prefixStyles, ...(prefixStyles ?? [])]\r\n });\r\n }\r\n\r\n #getFnWithBoundArgs<TFnName extends BasicConsoleFnKeys>(\r\n { fnName, style = \"reset\", formatString: formattingSuffix }: { fnName: TFnName } & LoggerFnBindArgs\r\n ): ILogger[TFnName] {\r\n const styles = [...this.#prefixStyles];\r\n if (isObject(style)) {\r\n styles.push(style);\r\n }\r\n // If style === 'reset': reset the log css (this is only needed if a format string is provided)\r\n else if (style === \"reset\" && isString(formattingSuffix) && formattingSuffix.trim() !== \"\") {\r\n // Add empty log style object which adds an empty string to the log parameters to set the css placeholder to nothing.\r\n styles.push({});\r\n }\r\n // All function names that don't match a log level, will log at the \"info\" level\r\n const level = ConsoleLoggingLevels.includes(fnName as ConsoleLoggingLevels)\r\n ? fnName as ConsoleLoggingLevels\r\n : \"info\";\r\n\r\n const logFnBoundArgs = getStyledMessageArgs({ level, messages: this.#prefixes, styles, formattingSuffix });\r\n return getBoundLoggerFnOrNoop(this, fnName, ...logFnBoundArgs);\r\n }\r\n\r\n bindDebugOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"debug\", ...opts }); }\r\n bindDirxmlOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"dirxml\", ...opts }); }\r\n bindErrorOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"error\", ...opts }); }\r\n bindGroupOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"group\", ...opts }); }\r\n bindGroupCollapsedOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"groupCollapsed\", ...opts }); }\r\n bindInfoOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"info\", ...opts }); }\r\n bindLogOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"log\", ...opts }); }\r\n bindTraceOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"trace\", ...opts }); }\r\n bindWarnOptions(opts: LoggerFnBindArgs) { return this.#getFnWithBoundArgs({ fnName: \"warn\", ...opts }); }\r\n\r\n get assert() { return getBoundLoggerFnOrNoop(this, \"assert\"); }\r\n get clear() { return getBoundLoggerFnOrNoop(this,\"clear\"); }\r\n get count() { return getBoundLoggerFnOrNoop(this,\"count\"); }\r\n get countReset() { return getBoundLoggerFnOrNoop(this,\"countReset\"); }\r\n get dir() { return getBoundLoggerFnOrNoop(this,\"dir\"); }\r\n get groupEnd() { return getBoundLoggerFnOrNoop(this,\"groupEnd\"); }\r\n get table() { return getBoundLoggerFnOrNoop(this,\"table\"); }\r\n get time() { return getBoundLoggerFnOrNoop(this,\"time\"); }\r\n get timeEnd() { return getBoundLoggerFnOrNoop(this,\"timeEnd\"); }\r\n get timeLog() { return getBoundLoggerFnOrNoop(this,\"timeLog\"); }\r\n get timeStamp() { return getBoundLoggerFnOrNoop(this,\"timeStamp\"); }\r\n\r\n get debug(): WindowConsole[\"debug\"] { return getBoundLoggerFnFromPrefixArgs(this, \"debug\"); }\r\n get dirxml(): WindowConsole[\"dirxml\"] { return getBoundLoggerFnFromPrefixArgs(this, \"dirxml\"); }\r\n get error(): WindowConsole[\"error\"] { return getBoundLoggerFnFromPrefixArgs(this, \"error\"); }\r\n get group(): WindowConsole[\"group\"] { return getBoundLoggerFnFromPrefixArgs(this, \"group\"); }\r\n get groupCollapsed(): WindowConsole[\"groupCollapsed\"] { return getBoundLoggerFnFromPrefixArgs(this, \"groupCollapsed\"); }\r\n get info(): WindowConsole[\"info\"] { return getBoundLoggerFnFromPrefixArgs(this, \"info\"); }\r\n get log(): WindowConsole[\"log\"] { return getBoundLoggerFnFromPrefixArgs(this, \"log\"); }\r\n get trace(): WindowConsole[\"trace\"] { return getBoundLoggerFnFromPrefixArgs(this, \"trace\"); }\r\n get warn(): WindowConsole[\"warn\"] { return getBoundLoggerFnFromPrefixArgs(this, \"warn\"); }\r\n\r\n static #stylePresets = Object.freeze({\r\n ButtonLabel(styles?: LoggerCss) {\r\n return Object.freeze({\r\n ...BasicButtonLabelStyle,\r\n ...(styles ?? {})\r\n });\r\n }\r\n }) satisfies Record<string, (styles?: LoggerCss) => LoggerCss>;\r\n\r\n static get StylePresets() {\r\n return this.#stylePresets;\r\n }\r\n}\r\n\r\naddLoggerFilter({\r\n verboseDebug: [\"*\"],\r\n logFn: [\"time\", \"timeEnd\"]\r\n}, false);\r\n\r\n\r\n(window as any).McLogger = Logger;", "import { Logger } from \"../utils/Logger/Logger.js\";\r\n\r\nexport const BaseFormLogger = new Logger({\r\n tags: { category: \"Forms\" },\r\n prefixStrings: [\"Form\"],\r\n prefixStyles: [Logger.StylePresets.ButtonLabel({ 'background-color': \"#639FAB\" })]\r\n});\r\n\r\nexport const SecondButtonDefaultStyle = Logger.StylePresets.ButtonLabel({ 'background-color': \"#575761\" });"], "mappings": "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", "names": ["objToString", "value", "isNull", "isUndefined", "isNil", "isNotNil", "isString", "isSymbol", "isObject", "isFunction", "isBoolean", "value", "isNotNil", "objToString", "isNumber", "isObject", "isArray", "value", "isArrayOfType", "value", "typeCheckFunc", "isArray", "isStringArray", "isString", "convertKebabToCamelCase", "str", "x", "isEmptyString", "value", "isStringLiteralOfType", "value", "possibleValues", "isArray", "isString", "excludeFrom", "arr", "exclusions", "result", "a", "isAnyHTMLInputElementType", "value", "isObject", "createReverseObjectMap", "value", "isObject", "keys", "k", "exhaustiveGuard", "message", "createEnumFromKeys", "camelCaseProps", "result", "key", "convertKebabToCamelCase", "getTypedObjectKeys", "obj", "checkIsNilOrWhitespaceAfterTrim", "isNil", "isString", "isEmptyString", "defaultIfNilOrWhiteSpace", "options", "numDefaults", "returnVal", "i", "curOptions", "getter", "defaultValue", "isFunction", "getValueFromPropsPath", "item", "path", "valueIfPathInvalid", "curValue", "prop", "mapArrayToProp", "array", "prop", "el", "flatMapArrayToNestedProp", "array", "path", "defaultIfNever", "el", "getValueFromPropsPath", "uniqueTupleValues", "array", "v", "i", "convertArrayToPropIndexedObject", "array", "indexBy", "result", "item", "propValue", "checkLocalStorageAvailable", "storage", "x", "e", "parseTagsObjFromLocalStorage", "propName", "localStorageTagsString", "localStorageTags", "isObject", "localStorageTagKeys", "k", "isStringArray", "isNull", "readPropFromLocalStorage", "checkLocalStorageAvailable", "isString", "saveValueToLocalStorage", "value", "saveToLocalStorage", "removeValueFromLocalStorage", "mergeTagsObjects", "tagsObjOne", "tagsObjTwo", "mergeFunc", "allKeys", "newTagsObj", "key", "propMergeRes", "isUndefined", "mergeInitialWithLocalStorageValue", "initialValue", "localStorageVal", "removeExtraTagsFromInitial", "valOne", "valTwo", "el", "definePropOnWindow", "propDescriptor", "isNil", "mergedValue", "parseTagsObj", "obj", "objKeys", "addTagsToTagsObj", "newTags", "newKeys", "tagsToAdd", "t", "removeTagsFromTagsObj", "tagsToRemove", "keys", "tagsToRemoveVal", "item", "getLoggerFilter", "dTags", "addLoggerFilter", "filteredTags", "removeLoggerFilter", "getLoggerFilterOverride", "overrides", "addLoggerFilterOverride", "filteredTagsOverride", "removeLoggerFilterOverride", "resetLoggerFilter", "oKeys", "checkLoggerIsFiltered", "logger", "tags", "tagVal", "filteredVal", "overrideVal", "WindowConsole", "ConsoleLoggingLevels", "BasicConsoleFnKeys", "getStringFromStyleObject", "stylesObj", "cssStyles", "styleProp", "BasicButtonLabelStyle", "LoggerLevelColors", "LoggerLevelLabelStyle", "getLevelLabelStyle", "level", "color", "getStyledMessageArgs", "messages", "styles", "formattingSuffix", "firstArg", "remainingArgsArr", "ConsoleLoggingLevels", "maxMessagesOrStyles", "i", "msg", "styleObj", "styleCss", "isObject", "isNotNil", "isString", "getLoggerPrefixArgs", "logger", "level", "getStyledMessageArgs", "getConsoleFn", "fnName", "WindowConsole", "getBoundConsoleFn", "args", "getBoundLoggerFnOrNoop", "logger", "fnName", "args", "BasicConsoleFnKeys", "level", "ConsoleLoggingLevels", "getBoundConsoleFn", "getBoundLoggerFnFromPrefixArgs", "getLoggerPrefixArgs", "Logger", "_Logger", "#prefixes", "#prefixStyles", "#tags", "#allUsedTags", "#addToUsedTags", "tags", "k", "isString", "item", "prefixStrings", "prefixStyles", "getLoggerFilter", "filteredTags", "addLoggerFilter", "tagsToRemove", "removeLoggerFilter", "getLoggerFilterOverride", "filteredTagsOverride", "addLoggerFilterOverride", "checkLoggerIsFiltered", "resetLoggerFilter", "#getFnWithBoundArgs", "style", "formattingSuffix", "styles", "isObject", "logFnBoundArgs", "getStyledMessageArgs", "opts", "#stylePresets", "BasicButtonLabelStyle", "BaseFormLogger", "Logger", "SecondButtonDefaultStyle"] }