@putkoff/abstract-utilities 1.0.113 → 1.0.125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/client.js +1 -51
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/functions.js +4 -14
- package/dist/cjs/functions.js.map +1 -1
- package/dist/cjs/index.js +4 -14
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{print_utils-DzyRoj6m.js → print_utils-DhPs0s0W.js} +6 -16
- package/dist/cjs/print_utils-DhPs0s0W.js.map +1 -0
- package/dist/cjs/safe_storage-B6MYZDKg.js +941 -0
- package/dist/cjs/safe_storage-B6MYZDKg.js.map +1 -0
- package/dist/esm/client.js +2 -48
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/functions.js +2 -12
- package/dist/esm/functions.js.map +1 -1
- package/dist/esm/index.js +2 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{print_utils-qqcMhSul.js → print_utils-gTxtZBM7.js} +2 -12
- package/dist/esm/print_utils-gTxtZBM7.js.map +1 -0
- package/dist/esm/safe_storage-D4QfcTw0.js +897 -0
- package/dist/esm/safe_storage-D4QfcTw0.js.map +1 -0
- package/dist/types/client/auth/index.d.ts +1 -1
- package/dist/types/client/auth/src/index.d.ts +1 -1
- package/dist/types/client/fetch/src/fetch_auth.d.ts +1 -1
- package/dist/types/client/fetch/src/index.d.ts +1 -1
- package/dist/types/client/index.d.ts +1 -2
- package/dist/types/client/ui_utils/index.d.ts +1 -1
- package/dist/types/client/ui_utils/src/index.d.ts +4 -4
- package/dist/types/functions/auth_utils/imports.d.ts +2 -2
- package/dist/types/functions/auth_utils/index.d.ts +1 -1
- package/dist/types/functions/auth_utils/src/index.d.ts +1 -1
- package/dist/types/functions/auth_utils/src/jwt_core.d.ts +1 -1
- package/dist/types/functions/auth_utils/src/token_utils (Copy).d.ts +1 -1
- package/dist/types/functions/auth_utils/src/token_utils.d.ts +1 -1
- package/dist/types/functions/config_utils/imports.d.ts +3 -3
- package/dist/types/functions/config_utils/index.d.ts +1 -1
- package/dist/types/functions/config_utils/src/config_utils.d.ts +1 -1
- package/dist/types/functions/config_utils/src/index.d.ts +1 -1
- package/dist/types/functions/constants_utils/index.d.ts +1 -1
- package/dist/types/functions/constants_utils/src/index.d.ts +1 -1
- package/dist/types/functions/env_utils/imports.d.ts +1 -1
- package/dist/types/functions/env_utils/index.d.ts +1 -1
- package/dist/types/functions/env_utils/src/index.d.ts +1 -1
- package/dist/types/functions/fetch_utils/imports.d.ts +2 -2
- package/dist/types/functions/fetch_utils/index.d.ts +1 -1
- package/dist/types/functions/fetch_utils/src/index.d.ts +3 -3
- package/dist/types/functions/fetch_utils/src/utils.d.ts +1 -1
- package/dist/types/functions/inspect_utils/index.d.ts +2 -2
- package/dist/types/functions/inspect_utils/src/index.d.ts +1 -1
- package/dist/types/functions/math_utils/conversions.d.ts +1 -1
- package/dist/types/functions/math_utils/index.d.ts +6 -6
- package/dist/types/functions/path_utils/imports.d.ts +2 -2
- package/dist/types/functions/path_utils/index.d.ts +1 -1
- package/dist/types/functions/path_utils/src/index.d.ts +6 -6
- package/dist/types/functions/print_utils/imports.d.ts +1 -1
- package/dist/types/functions/print_utils/index.d.ts +1 -1
- package/dist/types/functions/print_utils/src/index.d.ts +1 -1
- package/dist/types/functions/read_utils/imports.d.ts +1 -1
- package/dist/types/functions/read_utils/index.d.ts +1 -1
- package/dist/types/functions/read_utils/src/index.d.ts +3 -3
- package/dist/types/functions/rndm_utils/imports.d.ts +0 -1
- package/dist/types/functions/rndm_utils/index.d.ts +1 -1
- package/dist/types/functions/rndm_utils/src/index.d.ts +1 -1
- package/dist/types/functions/safe_utils/imports.d.ts +1 -1
- package/dist/types/functions/safe_utils/index.d.ts +1 -1
- package/dist/types/functions/safe_utils/src/index.d.ts +4 -4
- package/dist/types/functions/size_utils/index.d.ts +1 -1
- package/dist/types/functions/size_utils/src/index.d.ts +1 -1
- package/dist/types/functions/string_utils/index.d.ts +1 -1
- package/dist/types/functions/string_utils/src/index.d.ts +2 -2
- package/dist/types/functions/type_utils/imports.d.ts +0 -1
- package/dist/types/functions/type_utils/index.d.ts +1 -1
- package/dist/types/functions/type_utils/src/imports.d.ts +0 -1
- package/dist/types/functions/type_utils/src/index.d.ts +6 -6
- package/dist/types/functions/variable_utils/imports.d.ts +1 -1
- package/dist/types/functions/variable_utils/index.d.ts +1 -1
- package/dist/types/functions/variable_utils/src/index.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/server/index.d.ts +1 -1
- package/dist/types/server/src/index.d.ts +1 -1
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/path-browserify.d.ts +2 -3
- package/dist/types/types/src/index.d.ts +4 -4
- package/dist/types/utils/imports.d.ts +1 -1
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/src/index.d.ts +2 -2
- package/package.json +2 -2
- package/dist/cjs/print_utils-DzyRoj6m.js.map +0 -1
- package/dist/cjs/safe_storage-CJgWghnh.js +0 -15986
- package/dist/cjs/safe_storage-CJgWghnh.js.map +0 -1
- package/dist/esm/print_utils-qqcMhSul.js.map +0 -1
- package/dist/esm/safe_storage-CMuv35Vo.js +0 -15941
- package/dist/esm/safe_storage-CMuv35Vo.js.map +0 -1
- package/dist/types/client/auth/index.js +0 -3
- package/dist/types/client/auth/src/index.js +0 -3
- package/dist/types/client/auth/src/token_client.js +0 -73
- package/dist/types/client/fetch/src/fetch_auth.js +0 -26
- package/dist/types/client/fetch/src/index.js +0 -2
- package/dist/types/client/index.js +0 -4
- package/dist/types/client/ui_utils/index.js +0 -2
- package/dist/types/client/ui_utils/src/button.js +0 -34
- package/dist/types/client/ui_utils/src/checkbox.js +0 -18
- package/dist/types/client/ui_utils/src/index.js +0 -4
- package/dist/types/client/ui_utils/src/input.js +0 -18
- package/dist/types/client/ui_utils/src/spinner.js +0 -5
- package/dist/types/functions/auth_utils/imports.js +0 -1
- package/dist/types/functions/auth_utils/index.js +0 -1
- package/dist/types/functions/auth_utils/src/index.js +0 -1
- package/dist/types/functions/auth_utils/src/jwt_core.js +0 -25
- package/dist/types/functions/auth_utils/src/token_utils (Copy).js +0 -25
- package/dist/types/functions/auth_utils/src/token_utils.js +0 -105
- package/dist/types/functions/config_utils/imports.js +0 -2
- package/dist/types/functions/config_utils/index.js +0 -1
- package/dist/types/functions/config_utils/src/config_utils.js +0 -83
- package/dist/types/functions/config_utils/src/index.js +0 -1
- package/dist/types/functions/constants_utils/index.js +0 -1
- package/dist/types/functions/constants_utils/src/constants.js +0 -7
- package/dist/types/functions/constants_utils/src/index.js +0 -1
- package/dist/types/functions/env_utils/imports.js +0 -1
- package/dist/types/functions/env_utils/index.js +0 -1
- package/dist/types/functions/env_utils/src/index.js +0 -1
- package/dist/types/functions/env_utils/src/window_utils.js +0 -47
- package/dist/types/functions/fetch_utils/imports.js +0 -1
- package/dist/types/functions/fetch_utils/index.js +0 -1
- package/dist/types/functions/fetch_utils/src/fetch_utils.js +0 -70
- package/dist/types/functions/fetch_utils/src/index.js +0 -3
- package/dist/types/functions/fetch_utils/src/url_utils.js +0 -86
- package/dist/types/functions/fetch_utils/src/utils.js +0 -102
- package/dist/types/functions/index.js +0 -17
- package/dist/types/functions/inspect_utils/imports.js +0 -1
- package/dist/types/functions/inspect_utils/index.js +0 -2
- package/dist/types/functions/inspect_utils/src/caller_utils.js +0 -28
- package/dist/types/functions/inspect_utils/src/index.js +0 -1
- package/dist/types/functions/math_utils/bigint_utils.js +0 -36
- package/dist/types/functions/math_utils/constants.js +0 -37
- package/dist/types/functions/math_utils/conversions.js +0 -129
- package/dist/types/functions/math_utils/index.js +0 -6
- package/dist/types/functions/math_utils/safe_math.js +0 -35
- package/dist/types/functions/math_utils/scaleInterfaces.js +0 -3
- package/dist/types/functions/math_utils/time_utils.js +0 -4
- package/dist/types/functions/path_utils/imports.js +0 -27
- package/dist/types/functions/path_utils/index.js +0 -1
- package/dist/types/functions/path_utils/src/base_dirs.js +0 -17
- package/dist/types/functions/path_utils/src/function_dirs.js +0 -42
- package/dist/types/functions/path_utils/src/index.js +0 -6
- package/dist/types/functions/path_utils/src/misc_dirs.js +0 -15
- package/dist/types/functions/path_utils/src/path_utils.js +0 -160
- package/dist/types/functions/path_utils/src/paths.js +0 -12
- package/dist/types/functions/path_utils/src/src_dirs.js +0 -25
- package/dist/types/functions/print_utils/imports.js +0 -1
- package/dist/types/functions/print_utils/index.js +0 -1
- package/dist/types/functions/print_utils/src/index.js +0 -1
- package/dist/types/functions/print_utils/src/print_utils.js +0 -14
- package/dist/types/functions/read_utils/imports.js +0 -1
- package/dist/types/functions/read_utils/index.js +0 -1
- package/dist/types/functions/read_utils/src/index.js +0 -3
- package/dist/types/functions/read_utils/src/readJsonFile.browser.js +0 -26
- package/dist/types/functions/read_utils/src/readJsonFile.js +0 -35
- package/dist/types/functions/read_utils/src/readJsonFile.node.js +0 -13
- package/dist/types/functions/rndm_utils/imports.js +0 -1
- package/dist/types/functions/rndm_utils/index.js +0 -1
- package/dist/types/functions/rndm_utils/src/index.js +0 -1
- package/dist/types/functions/rndm_utils/src/utils.js +0 -12
- package/dist/types/functions/safe_utils/imports.js +0 -1
- package/dist/types/functions/safe_utils/index.js +0 -1
- package/dist/types/functions/safe_utils/src/index.js +0 -4
- package/dist/types/functions/safe_utils/src/safe_document.js +0 -12
- package/dist/types/functions/safe_utils/src/safe_globals.js +0 -14
- package/dist/types/functions/safe_utils/src/safe_storage.js +0 -50
- package/dist/types/functions/safe_utils/src/safe_window.js +0 -42
- package/dist/types/functions/size_utils/index.js +0 -1
- package/dist/types/functions/size_utils/src/index.js +0 -1
- package/dist/types/functions/size_utils/src/sizeUtils.js +0 -44
- package/dist/types/functions/string_utils/index.js +0 -1
- package/dist/types/functions/string_utils/src/index.js +0 -2
- package/dist/types/functions/string_utils/src/quote_utils.js +0 -17
- package/dist/types/functions/string_utils/src/string_utils.js +0 -186
- package/dist/types/functions/type_utils/imports.js +0 -1
- package/dist/types/functions/type_utils/index.js +0 -1
- package/dist/types/functions/type_utils/src/clean_utils.js +0 -38
- package/dist/types/functions/type_utils/src/ensure_utils.js +0 -84
- package/dist/types/functions/type_utils/src/imports.js +0 -1
- package/dist/types/functions/type_utils/src/index.js +0 -6
- package/dist/types/functions/type_utils/src/json_utils.js +0 -93
- package/dist/types/functions/type_utils/src/list_utils.js +0 -83
- package/dist/types/functions/type_utils/src/mime_utils.js +0 -314
- package/dist/types/functions/type_utils/src/null_utils.js +0 -21
- package/dist/types/functions/type_utils/src/type_utils.js +0 -39
- package/dist/types/functions/variable_utils/imports.js +0 -1
- package/dist/types/functions/variable_utils/index.js +0 -1
- package/dist/types/functions/variable_utils/src/index.js +0 -1
- package/dist/types/functions/variable_utils/src/variable_utils.js +0 -34
- package/dist/types/index.js +0 -2
- package/dist/types/server/index.js +0 -2
- package/dist/types/server/src/index.js +0 -2
- package/dist/types/server/src/mime_utils.js +0 -314
- package/dist/types/types/index.js +0 -1
- package/dist/types/types/path-browserify.js +0 -1
- package/dist/types/types/src/Files.js +0 -1
- package/dist/types/types/src/index.js +0 -4
- package/dist/types/types/src/login.js +0 -1
- package/dist/types/types/src/logout.js +0 -1
- package/dist/types/types/src/utils.js +0 -1
- package/dist/types/utils/imports.js +0 -1
- package/dist/types/utils/index.js +0 -1
- package/dist/types/utils/src/Input.js +0 -2
- package/dist/types/utils/src/config.js +0 -27
- package/dist/types/utils/src/index.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print_utils-gTxtZBM7.js","sources":["../../src/functions/constants_utils/src/constants.ts","../../src/functions/env_utils/src/window_utils.ts","../../src/functions/fetch_utils/src/utils.ts","../../src/functions/fetch_utils/src/fetch_utils.ts","../../src/functions/fetch_utils/src/url_utils.ts","../../src/functions/type_utils/src/list_utils.ts","../../src/functions/type_utils/src/ensure_utils.ts","../../src/functions/type_utils/src/clean_utils.ts","../../src/functions/type_utils/src/json_utils.ts","../../src/functions/type_utils/src/type_utils.ts","../../src/functions/type_utils/src/null_utils.ts","../../src/functions/string_utils/src/string_utils.ts","../../src/functions/string_utils/src/quote_utils.ts","../../src/functions/path_utils/imports.ts","../../src/functions/path_utils/src/path_utils.ts","../../src/functions/path_utils/src/paths.ts","../../src/functions/path_utils/src/function_dirs.ts","../../src/functions/path_utils/src/src_dirs.ts","../../src/functions/path_utils/src/base_dirs.ts","../../src/functions/path_utils/src/misc_dirs.ts","../../src/functions/rndm_utils/src/utils.ts","../../src/functions/math_utils/safe_math.ts","../../src/functions/math_utils/constants.ts","../../src/functions/math_utils/conversions.ts","../../src/functions/math_utils/time_utils.ts","../../src/functions/math_utils/bigint_utils.ts","../../src/functions/safe_utils/src/safe_document.ts","../../src/functions/safe_utils/src/safe_window.ts","../../src/functions/read_utils/src/readJsonFile.browser.ts","../../src/functions/read_utils/src/readJsonFile.node.ts","../../src/functions/read_utils/src/readJsonFile.ts","../../src/functions/config_utils/src/config_utils.ts","../../src/functions/variable_utils/src/variable_utils.ts","../../src/functions/size_utils/src/sizeUtils.ts","../../src/functions/inspect_utils/src/caller_utils.ts","../../src/functions/print_utils/src/print_utils.ts"],"sourcesContent":["export const PROTOCOL='https://';\nexport const DOMAIN_NAME = 'abstractendeavors';\nexport const BASE_URL = `${PROTOCOL}${DOMAIN_NAME}.com`;\nexport const SUB_DIR = 'secure-files';\nexport const PROD_PREFIX = `/${SUB_DIR}/`;\nexport const API_PREFIX = `/${SUB_DIR}/api`;\nexport const DEV_PREFIX = `/${SUB_DIR}-dev/`;\n\n\n","import {BASE_URL,DEV_PREFIX} from './../imports'\nexport function get_window() {\n try{\n if (typeof window !== 'undefined'){\n return window\n }\n }catch(err){\n alert(err)\n }\n return null\n}\nexport function get_window_location() {\n try{\n const Window = get_window()\n if (!Window){\n return BASE_URL\n }\n return Window.location \n }catch(err){\n alert(err)\n }\n return null\n}\nexport function get_window_pathname() {\n try{\n const Window = get_window()\n if (!Window){\n return DEV_PREFIX\n }\n return Window.location.pathname\n }catch(err){\n alert(err)\n }\n return null\n}\nexport function get_window_parts() {\n try{\n return get_window_location()\n }catch(err){\n alert(err)\n }\n return null\n}\n\n","import {FetchVariables} from './../imports';\n\n\n\n/**\n * Unwraps nested { result } fields until you hit a non-object or no more \"result\" keys.\n */\nexport function getResult<T>(obj: unknown): T {\n let current: any = obj;\n while (\n current &&\n typeof current === \"object\" &&\n Object.prototype.hasOwnProperty.call(current, \"result\")\n ) {\n current = (current as any).result;\n }\n return current as T;\n}\n\n// Determines HTTP method, defaults to GET or POST based on body\nexport function getMethod(method: string | null = null, body: unknown = null): string {\n const validMethods: string[] = ['GET', 'POST', 'PUT', 'PATCH', 'PULL'];\n method = (method || '').toUpperCase();\n if (!validMethods.includes(method)) {\n method = body ? 'POST' : 'GET';\n }\n return method;\n}\n\n// Gets headers, skips JSON headers when body is FormData\nexport function getHeaders(\n headers: Record<string, string> = {},\n method: string | null = null,\n body: unknown = null\n): Record<string, string> {\n const result: Record<string, string> = { ...headers };\n\n // let browser set boundary\n if (body instanceof FormData) {\n return result;\n }\n\n const upper = method?.toUpperCase();\n\n if (\n ['POST', 'PUT', 'PATCH'].includes(upper ?? '') &&\n !result['Content-Type']\n ) {\n result['Content-Type'] = 'application/json';\n }\n\n return result;\n}\n// Prepares request body, serializes to JSON for non-GET requests\nexport function getBody(body: unknown = null, method: string | null = null): string | undefined {\n method = getMethod(method, body);\n if (method === 'GET') {\n return undefined;\n }\n if (body) {\n try {\n return JSON.stringify(body);\n } catch (err) {\n return body as string;\n }\n }\n return undefined;\n}\n\n\n\n// Prepares fetch variables, passes FormData intact\nexport function getFetchVars(\n headers: Record<string, string> | null = null,\n method: string | null = null,\n body: any = null\n): FetchVariables {\n method = getMethod(method, body);\n headers = getHeaders(headers || {}, method, body);\n\n // only JSON-stringify non-FormData bodies\n if (!(body instanceof FormData)) {\n body = getBody(body, method);\n }\n return { method, headers, body };\n}\n\n/*\n * parseResult no longer needs to worry about JSON vs HTML redirect errors;\n * all 401/403 have already been handled above.\n */\nexport async function parseResult(res: Response): Promise<unknown> {\n // runs checkResponse first, will throw if session is expired\n res = checkResponse(res);\n\n if (!res.ok) {\n // for any other non-401 errors, you can still surface them\n const errorText = await res.text();\n throw new Error(errorText || res.statusText);\n }\n\n // now safely parse JSON\n return res.json();\n}\n\n/**\n * Intercept 401/403 and force a clean redirect to login\n * without ever showing an alert.\n */\nexport function checkResponse(res: Response): Response {\n if (res.status === 401 || res.status === 403) {\n // 1) clear out the stale token\n localStorage.removeItem(\"token\");\n // 2) replace history so \"back\" doesn’t re-trigger the protected route\n window.history.replaceState({}, \"\", \"/secure-files\");\n // 3) short-circuit all further fetch logic\n throw new Error(\"SessionExpired\");\n }\n return res;\n}\n\n","\nimport {getResult} from './utils'\n// Constructs API URL from endpoint\n\n\n\nexport function fetchIt<T>(\n url: any,\n body?: any,\n method?: any,\n headers?: Record<string,string> | null,\n blob?: boolean,\n configUrl?: boolean,\n withCredentials?: boolean,\n returnJson?: boolean,\n returnReult?: boolean,\n): Promise<T>;\n// 2) When blob = true, we return a Blob\nexport function fetchIt(\n url: any,\n body?: any,\n method?: any,\n headers?: Record<string,string> | null,\n blob?: boolean,\n configUrl?: boolean,\n withCredentials?: boolean,\n returnJson?: boolean,\n returnReult?: boolean,\n): Promise<Blob>;\nexport async function fetchIt<T = any>(\n endpoint: any,\n body: any = null,\n method: any = null,\n headers: any = null,\n blob: boolean = false,\n configUrl: boolean = false,\n withCredentials: boolean = true,\n returnJson: boolean = true,\n returnReult: boolean = true\n): Promise<any> {\n method = (method || \"GET\").toUpperCase();\n\n // 1) auto-detect absolute URLs\n const isAbsolute =\n typeof endpoint === \"string\" && /^https?:\\/\\//i.test(endpoint);\n\n // 2) choose the URL\n const url: string= endpoint;\n\n\n // 3) prepare headers & body\n headers = {\n ...(body instanceof FormData ? {} : { \"Content-Type\": \"application/json\" }),\n ...headers,\n };\n\n const opts: RequestInit = {\n method,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n headers,\n body:\n body instanceof FormData\n ? body\n : body != null && method !== \"GET\"\n ? JSON.stringify(body)\n : undefined,\n };\n\n console.debug(\"➡️ secureFetchIt →\", url, opts);\n const res = await fetch(url, opts);\n if (!res.ok) {\n const err = await res.text();\n throw new Error(`HTTP ${res.status}: ${err}`);\n }\n\n if (blob) return res.blob();\n if (returnReult) return getResult(res.json());\n if (returnJson) return res.json();\n return res;\n}\n\n// Constructs HTML directory path\nexport function getHtmlDirectory(directory: string, filename: string): string {\n return `${directory}/${filename}.html`;\n}\n// Fetches HTML content\nexport async function fetchIndexHtml(\n filename: string,\n directory: string = 'sf_index',\n base: string = 'html'\n): Promise<string> {\n const url: string = `/${base}/${directory}/${filename}.html`;\n const response: Response = await fetch(url);\n return await response.text();\n}\n\n// Fetches and injects HTML content into container\nexport async function fetchIndexHtmlContainer(\n filename: string,\n doc: Document = document,\n directory: string = 'html'\n): Promise<void> {\n const container: string = `${filename}-container`;\n const html: string = await fetchIndexHtml(filename, directory);\n const el: HTMLElement | null = doc.getElementById(container);\n if (el) {\n el.innerHTML = html;\n } else {\n console.warn(`⚠️ No container found for: #${container}`);\n }\n}\n\n","import path from 'path';\nexport function urlJoin(...parts: (string | undefined | null)[]) {\n const s = (parts.length === 1 && Array.isArray(parts[0]) ? parts[0] as any[] : parts) as string[];\n let r = \"\";\n for (let i = 0; i < s.length; i++) {\n let d = (s[i] ?? \"\").toString();\n if (!d) continue;\n if (i === 0) r = d;\n else {\n d = d.replace(/^\\/+/, \"\");\n r = r.replace(/\\/+$/, \"\");\n r = `${r}/${d}`;\n }\n }\n return r;\n}\n\n/**\n * Returns a full URL.\n * If partial_url is already absolute (starts with http), it is returned as is.\n * Otherwise, it is combined with the base URL.\n */\nexport function get_full_url(partial_url: any, domain: any = null) {\n if (typeof partial_url !== 'string') {\n throw new Error('partial_url must be a string');\n }\n // If it already starts with http, assume it is absolute.\n if (partial_url.startsWith('http')) {\n return partial_url;\n }\n return urlJoin(domain, partial_url);\n}\n\n/**\n * Returns a full file system path.\n * If partial_path is already absolute, it is returned as is.\n * Otherwise, it is joined with the base directory.\n */\nexport function get_full_path(partial_path: any, parent_dir: any = null) {\n if (typeof partial_path !== 'string') {\n throw new Error('partial_path must be a string');\n }\n if (path.isAbsolute(partial_path)) {\n return partial_path;\n }\n return urlJoin(parent_dir, partial_path);\n}\n/**\n * Converts a local file system path into its corresponding URL.\n * It checks against the known directories in all_paths and replaces the matching base.\n */\nexport function path_to_url(filePath: string, all_paths: any): string | null {\n if (typeof filePath !== 'string') {\n throw new Error('filePath must be a string');\n }\n for (const key in all_paths) {\n const mapping = all_paths[key as keyof typeof all_paths];\n const normalizedBase = path.normalize(mapping.path);\n if (filePath.startsWith(normalizedBase)) {\n const relativePath = filePath.substring(normalizedBase.length);\n return urlJoin(mapping.url, relativePath.replace(/\\\\/g, '/'));\n }\n }\n return null;\n}\n/**\n * Converts a URL into its corresponding local file system path.\n * It checks against the known URL prefixes in all_paths and replaces the matching base.\n */\n\nexport function url_to_path(urlStr: string, all_paths: any): string | null {\n if (typeof urlStr !== 'string') {\n throw new Error('urlStr must be a string');\n }\n for (const key in all_paths) {\n const mapping = all_paths[key as keyof typeof all_paths];\n if (urlStr.startsWith(mapping.url)) {\n const relativeUrl = urlStr.substring(mapping.url.length);\n return urlJoin(mapping.path, relativeUrl);\n }\n }\n return null;\n}\n\n\nexport function urljoin(\n\t...parts: (string | undefined | null)[]\n\t) {\n\t\treturn urlJoin(...parts);\n\t}\n","export function smart_split(s: string): string[] {\n const out: string[] = [];\n let depth = 0;\n let buf = \"\";\n\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n\n if (c === \"[\") {\n depth++;\n buf += c;\n continue;\n }\n\n if (c === \"]\") {\n depth--;\n buf += c;\n continue;\n }\n\n // Split ONLY when depth === 0\n if (c === \",\" && depth === 0) {\n out.push(buf);\n buf = \"\";\n continue;\n }\n\n buf += c;\n }\n\n if (buf.length > 0) out.push(buf);\n return out;\n}\nexport function split_outside_brackets(s: string): string[] {\n let depth = 0;\n let start = 0;\n const out: string[] = [];\n\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n\n if (c === \"[\") depth++;\n else if (c === \"]\") depth--;\n\n // split only when NOT inside brackets\n if (c === \",\" && depth === 0) {\n out.push(s.slice(start, i));\n start = i + 1;\n }\n }\n\n out.push(s.slice(start));\n return out;\n}\n\nexport function smart_split_preserving_lists(s: string): string[] {\n let depth = 0;\n let start = 0;\n const parts: string[] = [];\n\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n\n if (c === \"[\") depth++;\n else if (c === \"]\") depth--;\n\n // Split ONLY when depth == 0 AND a comma appears\n if (c === \",\" && depth === 0) {\n parts.push(s.slice(start, i));\n start = i + 1;\n }\n }\n\n parts.push(s.slice(start));\n\n return parts;\n}\n\n\nexport function parse_nested_list(s: string): any[] {\n // strip outer brackets\n const inner = s.slice(1, -1).trim();\n\n const parts = split_outside_brackets(inner);\n const result: any[] = [];\n\n for (let p of parts) {\n p = p.trim();\n\n if (p.startsWith(\"[\") && p.endsWith(\"]\")) {\n // recursively parse nested list\n result.push(parse_nested_list(p));\n } else {\n result.push(p);\n }\n }\n\n return result;\n}\n","import {parse_nested_list,split_outside_brackets} from './list_utils';\n\nexport function ensure_list(obj: any): any[] {\n if (obj == null) return [];\n\n if (Array.isArray(obj)) {\n return obj.flatMap(item => ensure_list(item));\n }\n\n const s = String(obj).trim();\n\n if (s.startsWith(\"[\") && s.endsWith(\"]\")) {\n return parse_nested_list(s);\n }\n\n return split_outside_brackets(s).map(x => x.trim());\n}\n\n// coerce any single value into a number (0 if it can't)\nexport function ensure_number(x: any): number {\n const n = Number(x);\n return isNaN(n) ? 0 : n;\n}\n\nexport function ensure_string(obj: any) {\n return String(obj);\n}\n\n\n\n\nexport function ensurelist(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function assureList(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function assure_list(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function ensureList(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function assurelist(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function ensurenumber(\n\tx: any\n\t):number {\n\t\treturn ensure_number(x);\n\t}\n\n\nexport function assureNumber(\n\tx: any\n\t):number {\n\t\treturn ensure_number(x);\n\t}\n\n\nexport function ensureNumber(\n\tx: any\n\t):number {\n\t\treturn ensure_number(x);\n\t}\n\n\nexport function assurenumber(\n\tx: any\n\t):number {\n\t\treturn ensure_number(x);\n\t}\n\n\nexport function assure_number(\n\tx: any\n\t):number {\n\t\treturn ensure_number(x);\n\t}\n\n\nexport function ensurestring(\n\tobj: any\n\t) {\n\t\treturn ensure_string(obj);\n\t}\n\n\nexport function ensureString(\n\tobj: any\n\t) {\n\t\treturn ensure_string(obj);\n\t}\n\n\nexport function assureString(\n\tobj: any\n\t) {\n\t\treturn ensure_string(obj);\n\t}\n\n\nexport function assurestring(\n\tobj: any\n\t) {\n\t\treturn ensure_string(obj);\n\t}\n\n\nexport function assure_string(\n\tobj: any\n\t) {\n\t\treturn ensure_string(obj);\n\t}\n\n\nexport function assurearray(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function ensurearray(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function ensure_array(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function ensureArray(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function assure_array(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n\n\nexport function assureArray(\n\tobj: any\n\t):any[] {\n\t\treturn ensure_list(obj);\n\t}\n","import { ensure_string, ensure_array } from './ensure_utils';\n\nexport function cleanText(input: any): any {\n // Replace delimiters with spaces and split\n const str = ensure_string(input);\n const words = str.replace(/[_.-]/g, ' ') // Replace _, -, . with space\n return words\n\n}\nexport function cleanArray(obj: any) {\n obj = ensure_array(obj);\n return Array.from(new Set(obj));\n}\nexport function getCleanArray(obj: any) {\n\n obj = obj.split(/\\s+/) // Split on any whitespace\n .filter((item: any): item is string => typeof item === 'string' && item !== '');\n // Get basename\n // Remove duplicates using Set\n const uniqueWords = cleanArray(obj);\n\n return uniqueWords;\n}\n// Cache a formatter instance for slightly better performance\nconst US_DECIMAL_FORMATTER = new Intl.NumberFormat('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n});\n\nexport function formatNumber<T>(value: T): string | T {\n try {\n // coerce to number\n const num = Number(value as any);\n // if it's NaN or infinite, bail out\n if (!isFinite(num)) return value;\n return US_DECIMAL_FORMATTER.format(num);\n } catch {\n // if anything goes wrong, return the original\n return value;\n }\n}\n","import { ensure_array } from './ensure_utils';\n// Constrain T so 'in obj' is allowed\nexport function get_key_value<T extends object>(obj: T, key: string): any {\n // we cast to any for the indexing, since TS can’t infer arbitrary string keys\n if (key in obj && (obj as any)[key] != null) {\n return (obj as any)[key];\n }\n return null;\n}\n\nexport function get<T extends object>(\n obj: T | null | undefined,\n keys: string | string[],\n defaultValue: any = null\n): any {\n const keyArray = ensure_array(keys);\n if (!obj || keyArray.length === 0) {\n return defaultValue;\n }\n for (const key of keyArray) {\n const val = get_key_value(obj, key);\n if (val != null) {\n return val;\n }\n }\n return defaultValue;\n}\n// Create the accountInfo table if it doesn't already exist\nexport function findKeyValue(obj: Record<string, any>, keyToFind: string): any {\n if (keyToFind in obj) return obj[keyToFind];\n \n for (const key in obj) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n const result = findKeyValue(obj[key], keyToFind);\n if (result !== undefined) return result;\n }\n }\n return undefined;\n }\n export function omitKeys<T extends object, K extends keyof T>(obj: T, ...keys: K[]): Omit<T, K> {\n const newObj = { ...obj };\n keys.forEach(key => {\n delete newObj[key];\n });\n return newObj;\n }\n/**\n* Extracts necessary properties from the insertValue to prevent circular references.\n*\n* @param insertValue - The original RPC result.\n* @returns A new object with only the required properties.\n*/\nexport function extractInsertData(insertValue: any): any {\n // Example: Suppose you only need certain fields from the transaction\n // Modify this function based on your actual data structure\n if (insertValue && typeof insertValue === 'object') {\n const { transaction, ...rest } = insertValue; // Exclude 'transaction' property\n return rest;\n }\n return insertValue;\n }\n // Recursive function to load nested JSON\nexport function loadInnerJson(data: any): any {\n if (typeof data === 'string') {\n try {\n const parsed = JSON.parse(data);\n return loadInnerJson(parsed);\n } catch (e) {\n return data;\n }\n } else if (Array.isArray(data)) {\n return data.map(item => loadInnerJson(item));\n } else if (typeof data === 'object' && data !== null) {\n const result: { [key: string]: any } = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n result[key] = loadInnerJson(data[key]);\n }\n }\n return result;\n }\n return data;\n}\n\n ","import { ensure_string } from './ensure_utils';\n\nexport function isType(obj: any, type: string) {\n if (typeof obj === type) {\n return true\n }\n return false\n}\n\nexport function isStrInString(obj: any, string: any) {\n const obj_str = ensure_string(obj).toLowerCase\n string = ensure_string(string).toLowerCase\n if (string.includes(obj_str)) {\n return true\n }\n return false\n}\n\nexport function getChar(i: number, string: any) {\n if (string.length >= i) {\n return ensure_string(string)[i]\n }\n}\n\nexport function getAlphaNum(obj: any) {\n\n const is_num = isNum(obj)\n const alphas: string = getAlphas();\n if (is_num) {\n return getChar(obj as number, alphas)\n }\n if (isStrInString(obj, alphas)) {\n return getChar(obj, alphas)\n }\n}\n\nexport function getNums() {\n return '0123456789'\n}\n\nexport function isNum(obj: any): boolean {\n return !Number.isNaN(Number(obj));\n}\n\nexport function getAlphas() {\n return 'abcdefghijklmnopqrstuvwxyz'\n}\n","// Function to handle undefined or null values\nexport function getIfNone<T>(obj: T | undefined | null, fallback: T): T {\n return obj !== undefined && obj !== null && obj !== '' ? obj : fallback;\n}\n/**\n * Merges non-null values from multiple dictionaries.\n */\nexport function mergeNotNullValues<T extends Record<string, any>>(\n dictA: T,\n dictB?: Partial<T>,\n dictC?: Partial<T>,\n dictD?: Partial<T>,\n dictE?: Partial<T>\n): T {\n const result:any = {} as T;\n for (const key of Object.keys(dictA)) {\n result[key] = dictA[key] ?? dictB?.[key] ?? dictC?.[key] ?? dictD?.[key] ?? dictE?.[key];\n }\n return result;\n}\n\n/**\n * Converts an empty object to null.\n */\nexport function emptyObjectToNull<T>(value: T): T | null {\n return value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0 ? null : value;\n}\n","import { assureString,ensure_list } from './../../type_utils'\nexport function getSubstring(obj: string, maxLength: number | null = null, minLength: number | null = null): string {\n const objLength = obj.length;\n const effectiveMaxLength = maxLength ?? objLength; // Use nullish coalescing for clarity\n const effectiveMinLength = minLength ?? 0;\n\n // Ensure bounds are valid\n const clampedMaxLength = Math.min(Math.max(effectiveMaxLength, 0), objLength);\n const clampedMinLength = Math.min(Math.max(effectiveMinLength, 0), objLength);\n\n // If minLength exceeds maxLength, return empty string or adjust logic as needed\n if (clampedMinLength >= clampedMaxLength) {\n return '';\n }\n\n return obj.substring(clampedMinLength, clampedMaxLength);\n}\n\n/**\n * Sanitize a string by removing null bytes and trimming whitespace.\n */\nexport function sanitizeString(input: string): string {\n if (!input) return input;\n return input.replace(/\\u0000/g, \"\").trim(); // Remove null bytes and whitespace\n}\n\nexport function truncateString(obj: string, maxLength: number = 20): string {\n const objLength = obj.length;\n if (objLength > maxLength && maxLength) {\n obj = getSubstring(obj, maxLength) + '...';\n }\n return obj;\n}\n\nexport function capitalize_str(string: any) {\n string = assureString(string);\n const string_len = string.length;\n let init_char = string.toUpperCase();\n if (string_len > 0) {\n init_char = string[0].toUpperCase();\n }\n let rest_chars = '';\n if (string_len > 1) {\n rest_chars = string.slice(1).toLowerCase();\n }\n const fin_chars = `${init_char}${rest_chars}`;\n return fin_chars;\n}\n\nexport function capitalize(string: any) {\n let nu_string = '';\n string = assureString(string);\n const objs = string.replace('-', '_').split('_');\n for (const obj of objs) {\n const str_obj = capitalize_str(obj);\n nu_string = `${nu_string} ${str_obj}`;\n }\n return eatAll(nu_string, [' ']);\n}\n// string_utils/src/string_utils.ts\nexport function stripPrefixes(\n str: string,\n bases: string | string[] = []\n): string {\n /* NEW: coerce whatever arrives into a string */\n str = String(str);\n\n const prefixes = (Array.isArray(bases) ? bases : [bases])\n .filter(Boolean)\n .sort((a, b) => b.length - a.length); // longest first\n\n let changed = true;\n while (changed) {\n changed = false;\n for (const prefix of prefixes) {\n if (str.startsWith(prefix)) {\n str = str.slice(prefix.length);\n changed = true;\n break; // restart from longest prefix\n }\n }\n }\n return str;\n}\nexport function tryEatPrefix(\n str: string,\n length: number,\n ...objs: any[]\n): [string, boolean] {\n str = String(str);\n objs = ensure_list(objs);\n\n const prefix = str.slice(0, length);\n if (length < 0) {\n const start = str.length + length;\n const actualPrefix = str.slice(start);\n return objs.includes(actualPrefix) ? [str.slice(0, start), true] : [str, false];\n }\n\n if (objs.includes(prefix)) {\n return [str.slice(length), true];\n }\n\n return [str, false];\n}\n\n/** Python-equivalent eatInner */\nexport function eatInner(str: any, listObjects: any): string {\n str = String(str);\n const chars = Array.isArray(listObjects) ? listObjects : [listObjects];\n\n // Keep removing from left while leftmost char is in the set\n while (str.length > 0 && chars.includes(str[0])) {\n str = str.slice(1);\n }\n return str;\n}\n\n/** Python-equivalent eatOuter */\nexport function eatOuter(str: any, listObjects: any): string {\n str = String(str);\n const chars = Array.isArray(listObjects) ? listObjects : [listObjects];\n\n if (!str || chars.length === 0) return str;\n\n for (let i = 0; i < str.length; i++) {\n if (!str) return str;\n const last = str[str.length - 1];\n if (!chars.includes(last)) {\n return str;\n }\n str = str.slice(0, -1);\n }\n return str;\n}\n\n/** Python-equivalent eatAll */\nexport function eatAll(str: any, listObjects: any): string {\n str = String(str);\n const chars = Array.isArray(listObjects) ? listObjects : [listObjects];\n\n str = eatInner(str, chars);\n str = eatOuter(str, chars);\n\n return str;\n}\n\n// Plug in the actual version from your project\nfunction get_alpha_ints(opts: {\n ints?: boolean;\n alpha?: boolean;\n lower?: boolean;\n capitalize?: boolean;\n string?: boolean;\n listObj?: boolean;\n}) {\n // REPLACE WITH YOUR REAL IMPLEMENTATION\n return [];\n}\n\n/** Python-equivalent eatElse */\nexport function eatElse(\n stringObj: any,\n chars?: any,\n ints = true,\n alpha = true,\n lower = true,\n capitalize = true,\n string = true,\n listObj = true\n): string {\n stringObj = String(stringObj);\n\n const alphaInts = get_alpha_ints({\n ints,\n alpha,\n lower,\n capitalize,\n string,\n listObj,\n });\n\n const ls = ensure_list(chars || []).concat(alphaInts);\n\n while (true) {\n if (!stringObj) return stringObj;\n\n const startOk = !ls.includes(stringObj[0]);\n const endOk = !ls.includes(stringObj[stringObj.length - 1]);\n const shouldEat = startOk || endOk;\n\n if (!shouldEat) return stringObj;\n\n if (stringObj && startOk) {\n stringObj = stringObj.length === 1 ? \"\" : stringObj.slice(1);\n }\n\n if (stringObj && endOk) {\n stringObj = stringObj.length === 1 ? \"\" : stringObj.slice(0, -1);\n }\n }\n}\n\n\nexport function tryParse(obj: any) {\n try {\n obj = JSON.stringify(obj)\n } catch (err) {\n try {\n obj = JSON.parse(obj)\n } catch (err) {\n\n }\n }\n return obj;\n}\nexport function create_list_string(array_obj: any) {\n let string = ''\n for (const obj in array_obj) {\n const array_value = array_obj[obj]\n const parsed_value = tryParse(array_value)\n string += `${obj} == ${parsed_value}\\n`\n\n }\n return string\n}\n\nexport function eatall(\n\tstr: any, listObjects: any\n\t):string {\n\t\treturn eatAll(str, listObjects);\n\t}\n\n\nexport function eatinner(\n\tstr: any, listObjects: any\n\t):string {\n\t\treturn eatInner(str, listObjects);\n\t}\n\n\nexport function eatouter(\n\tstr: any, listObjects: any\n\t):string {\n\t\treturn eatOuter(str, listObjects);\n\t}\n","/**\n * Checks if a value is enclosed in quotes.\n */\n\nexport function ends_in_quotes(value:any){\n if (typeof value === 'string'){\n if ((value.startsWith('\"') && value.endsWith('\"')) || (value.startsWith(\"'\") && value.endsWith(\"'\"))){\n return true\n }\n }\n return false\n}\nexport function stripQuotes(value: any): any {\n if (ends_in_quotes(value)) {\n return value.slice(1, -1); // Remove the first and last characters\n }\n return value; // Return the input unchanged for all other cases\n}\n","\n/** \n * In the browser we already have a WHATWG URL constructor on window.\n * Here we re-export it as “url” so other modules can import it.\n */\nconst _url = typeof window !== 'undefined' ? window.URL : undefined;\nexport { _url as url };\n/**\n * Minimal fileURLToPath implementation for browser-side code.\n * If you only ever need to strip off “file://” in development, this is enough.\n */\nexport function fileURLToPath(fileUrl: string): string {\n // e.g. fileUrl = \"file:///Users/foo/bar.txt\"\n try {\n const u = new URL(fileUrl);\n return u.pathname;\n } catch {\n // fallback: just strip file://\n return fileUrl.replace(/^file:\\/\\//, '');\n }\n}\nexport {eatOuter,eatInner} from './../string_utils';\nexport {ensure_list} from './../type_utils';\nexport function getAbsolutePath(): string {\n return fileURLToPath(import.meta.url);\n};","import * as path from 'path-browserify';\nimport { eatOuter, eatInner, ensure_list } from './../imports';\n\nexport function get_dirname(filePath: string | null): string {\n if (!filePath) return '';\n return path.dirname(filePath);\n}\nexport function get_basename(filePath: string | null): string {\n if (!filePath) return '';\n return path.basename(filePath);\n}\n\nexport function get_filename(filePath: string) {\n if (!filePath) return '';\n const ext = path.extname(filePath);\n return path.basename(filePath, ext);\n}\n\nexport function get_extname(filePath: string | null): string {\n if (!filePath) return '';\n return path.extname(filePath);\n}\n\nexport function get_splitext(filePath: string | null) {\n if (!filePath) return { filename: '', extname: '' };\n const ext = path.extname(filePath);\n // Get the basename without the extension\n const filename = path.basename(filePath, ext);\n return { filename, ext };\n}\n\n/**\n * Returns the path of `targetPath` relative to `basePath`.\n * Normalizes separators for consistent web and server environments.\n *\n * @param basePath - The base directory you want to compare from.\n * @param targetPath - The full path of the file/directory.\n * @returns A normalized relative path (e.g., \"subdir/file.txt\").\n */\nexport function get_relative_path(basePath: string, targetPath: string): string {\n try {\n // Compute the relative path using Node's native path.relative\n let rel = path.relative(basePath, targetPath);\n\n // Normalize to POSIX-style slashes for consistency (especially on Windows)\n rel = rel.split(path.sep).join('/');\n\n // Avoid empty string (happens if both paths are identical)\n return rel || '.';\n } catch (err) {\n console.error(`[get_relative_path] Error computing relative path`, err);\n return targetPath;\n }\n}\n\n\n/**\n * Join multiple path segments — clean, predictable, bulletproof.\n *\n * Accepts ANYTHING that ensure_list can handle:\n * • 'a,b,c'\n * • ['a', 'b,c']\n * • 'a/b/c'\n * • '/a/', 'b//c'\n * • mixed arrays, comma strings, whatever\n *\n * Always returns a clean POSIX path string. Never a list.\n */\nexport function make_path(...parts: any[]): string {\n // Normalize incoming segments into a flat list\n const segments = ensure_list(parts).map(x => String(x));\n\n let out = \"\";\n\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n\n // Normalize a segment:\n let cleaned = eatOuter(seg, \"/\"); // trim trailing slashes\n \n\n if (!cleaned) continue;\n\n if (out === \"\") {\n out = cleaned;\n } else {\n cleaned = eatInner(cleaned, \"/\"); // trim leading slashes\n out = `${out}/${cleaned}`;\n }\n }\n\n return out;\n}\nexport function sanitizeFilename(filename: string): string {\n return filename\n .toLowerCase()\n .replace(/\\s+|-/g, '-') // Replace spaces and hyphens with single hyphen\n .replace(/_/g, '-') // Replace underscores with hyphens\n .replace(/[^a-z0-9-.]/g, '') // Remove all non-alphanumeric chars except hyphen and dot\n .replace(/-+/g, '-') // Collapse multiple hyphens into one\n .replace(/^-|-$/, ''); // Remove leading/trailing hyphens\n}\n\n\n\nexport function make_sanitized_path(...paths: string[]): string {\n let real_path = '';\n for (let i = 0; i < paths.length; i++) {\n const sanitized = sanitizeFilename(eatOuter(paths[i], '/'));\n if (i === 0) {\n real_path = sanitized;\n } else if (sanitized) { // Only append if there's a non-empty segment\n real_path = `${real_path}/${sanitized}`;\n }\n }\n return real_path || '';\n}\n\nexport function normalizeUrl(base: string, p?: string): string { // ✅ single brace\n if (!p) return base;\n\n const cleanBase = base.replace(/\\/+$/, ''); // regex literal\n const cleanPath = p.replace(/^\\/+/, '');\n\n // collapse multiple “//” into one, but keep the “://” after protocol\n return `${cleanBase}/${cleanPath}`.replace(/([^:])\\/{2,}/g, '$1/');\n}\n\n\nexport function pathjoin(\n\t...parts: any[]\n\t):string {\n\t\treturn make_path(...parts);\n\t}\n\n\nexport function pathJoin(\n\t...parts: any[]\n\t):string {\n\t\treturn make_path(...parts);\n\t}\n\n\nexport function makepath(\n\t...parts: any[]\n\t):string {\n\t\treturn make_path(...parts);\n\t}\n\n\nexport function makePath(\n\t...parts: any[]\n\t):string {\n\t\treturn make_path(...parts);\n\t}\n\n\nexport function path_join(\n\t...parts: any[]\n\t):string {\n\t\treturn make_path(...parts);\n\t}\n\n\nexport function getSplitext(\n\tfilePath: string | null\n\t) {\n\t\treturn get_splitext(filePath);\n\t}\n\n\nexport function getsplitext(\n\tfilePath: string | null\n\t) {\n\t\treturn get_splitext(filePath);\n\t}\n\n\nexport function getextname(\n\tfilePath: string | null\n\t):string {\n\t\treturn get_extname(filePath);\n\t}\n\n\nexport function getExtname(\n\tfilePath: string | null\n\t):string {\n\t\treturn get_extname(filePath);\n\t}\n\n\nexport function getfilename(\n\tfilePath: string\n\t) {\n\t\treturn get_filename(filePath);\n\t}\n\n\nexport function getFilename(\n\tfilePath: string\n\t) {\n\t\treturn get_filename(filePath);\n\t}\n\n\nexport function getbasename(\n\tfilePath: string | null\n\t):string {\n\t\treturn get_basename(filePath);\n\t}\n\n\nexport function getBasename(\n\tfilePath: string | null\n\t):string {\n\t\treturn get_basename(filePath);\n\t}\n\n\nexport function getdirname(\n\tfilePath: string | null\n\t):string {\n\t\treturn get_dirname(filePath);\n\t}\n\n\nexport function getDirname(\n\tfilePath: string | null\n\t):string {\n\t\treturn get_dirname(filePath);\n\t}\n","import {getAbsolutePath} from './../imports'\nimport {get_dirname,make_path} from './path_utils';\n/**\n * Returns the absolute path of the current file.\n */\nexport function getAbsDir(): string {\n return get_dirname(getAbsolutePath());\n};\nexport function getAbsPath(subPath: string): string {\n return make_path(getAbsDir(), subPath);\n}\n\n\n\n","import {make_path,get_dirname} from './path_utils';\nimport {getAbsDir} from './paths';\nexport function getFunctionsDir(): string {\n return get_dirname(getAbsDir());\n};\n\n\nexport function geAuthsUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'auths');\n}; \nexport function geBackupsUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'backups');\n}; \nexport function geConstantsUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'constants');\n}; \nexport function geEnvUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'env_utils');\n}; \nexport function geFetchUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'fetch_utils');\n}; \nexport function geFileUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'file_utils');\n};\nexport function gePathUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'path_utils');\n}; \nexport function geStringUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'string_utils');\n}; \nexport function geTypeUtilsDirectory():string{\n return make_path(getFunctionsDir(), 'type_utils');\n};","import {make_path,get_dirname} from './path_utils';\nimport {getFunctionsDir} from './function_dirs';\nexport function getSrcDir(): string {\n return get_dirname(getFunctionsDir());\n};\nexport function geStaticDirectory():string{\n return make_path(getSrcDir(), 'static');\n};\nexport function getLibUtilsDirectory():string{\n return make_path(getSrcDir(), 'lib');\n}\nexport function getHooksUtilsDirectory():string{\n return make_path(getSrcDir(), 'hooks');\n};\nexport function getFunctionsUtilsDirectory():string{\n return make_path(getSrcDir(), 'functions');\n};\nexport function getComponentsUtilsDirectory():string{\n return make_path(getSrcDir(), 'components');\n};","import {make_path,get_dirname} from './path_utils';\nimport {getSrcDir} from './src_dirs';\nexport function getBaseDir(): string {\n return get_dirname(getSrcDir());\n}\nexport function getPublicDir():string {\n return make_path(getBaseDir(), 'public');\n};\nexport function getDistDir():string {\n return make_path(getBaseDir(), 'dist');\n};\nexport function getEnvDir():string {\n return make_path(getBaseDir(), '.env');\n};","import {getBaseDir,getEnvDir} from './base_dirs';\nimport {make_path} from './path_utils';\nexport function getEnvPath(string:string='.env'):string {\n return make_path(getEnvDir(),string);\n};\nexport function getDbConfigsPath(): string {\n return make_path(getBaseDir(),'dbConfigs');\n}\nexport function getSchemasPath(): string {\n return make_path(getDbConfigsPath(),'schemas');\n}\nexport function getSchemasDirPath(subPath: string): string {\n return make_path(getSchemasPath(),subPath);\n}\n","// src/functions/rndm_utils/utils.ts\nexport function alertit(obj: any = null) {\n let msg: string;\n try {\n msg = JSON.stringify(obj);\n } catch {\n // If JSON.stringify fails (circular refs, etc.), fall back to a simple string\n msg = String(obj);\n }\n alert(msg);\n}","\nimport { ensure_number } from './../type_utils';\n// take N args and coerce them all to numbers\nexport function safeNums(...args: Array<number | string | null | undefined>): number[] {\n return args.map(ensure_number);\n}\n\n// divide the first value by each of the following\nexport function safeDivide(...args: Array<number | string | null | undefined>): number {\n const [head, ...rest] = safeNums(...args);\n // if we don’t have a head or any divisor is zero, bail\n if (head === 0 || rest.some((d) => d === 0)) return 0;\n return rest.reduce((acc, d) => acc / d, head);\n}\n\n// multiply all the values together\nexport function safeMultiply(...args: Array<number | string | null | undefined>): number {\n const nums = safeNums(...args);\n // if any number is zero, result is zero\n if (nums.includes(0)) return 0;\n return nums.reduce((acc, n) => acc * n, 1);\n}\n\n// round a value to two decimals by percent\nexport function roundPercentage(x: any): number {\n const pct = safeMultiply(ensure_number(x), 100);\n return safeDivide(Math.round(pct), 100);\n}\nexport function exponential(i: number, k: number) {\n return i * (10 ** (k))\n\n}\n\nexport function isZero(obj:any){\n if (obj==0){\n return true\n }\n return false\n}\n","import { exponential } from './safe_math';\n\nexport const SECOND: number = 1\nexport const ZEPTOSECOND: number = exponential(SECOND, -21);\nexport const ATTOSECOND: number = exponential(SECOND, -18);\nexport const FEMTOSECOND: number = exponential(SECOND, -15);\nexport const PICOSECOND: number = exponential(SECOND, -12);\nexport const NANOSECOND: number = exponential(SECOND, -9);\nexport const MICROSECOND: number = exponential(SECOND, -6);\nexport const MILISECOND: number = exponential(SECOND, -3);\nexport const CENTISECOND: number = exponential(SECOND, -2);\nexport const DECISECOND: number = exponential(SECOND, -1);\n\n\nexport const MINUTE = 60 * SECOND;\nexport const HOUR = 60 * MINUTE;\nexport const DAY = 24 * HOUR;\nexport const YEAR = 365 * DAY;\nexport const MONTH = YEAR / 12;\n\n// Derived: explicit names\nexport const SECONDS_PER_MINUTE = MINUTE;\nexport const SECONDS_PER_HOUR = HOUR;\nexport const SECONDS_PER_DAY = DAY;\n//math\nexport const PI = Math.PI\nexport const PI2 = 2 * PI\n\n\n// Distance\nexport const METERS_PER_KM = 1000;\nexport const METERS_PER_MILE = 1609.34;\nexport const METERS_PER_FOOT = 0.3048;\n\nexport const KMS_PER_METER = 1 / METERS_PER_KM;\nexport const MILES_PER_METER = 1 / METERS_PER_MILE;\nexport const FEET_PER_METER = 1 / METERS_PER_FOOT;\n\nexport const MIN_IN_S = 1 / MINUTE;\nexport const HOUR_IN_S = 1 / HOUR;\nexport const DAY_IN_S = 1 / DAY;\nexport const YEAR_IN_S = 1 / YEAR;\nexport const MONTH_IN_S = 1 / MONTH;\nexport const MiPerH_TO_MPerS = METERS_PER_MILE * HOUR_IN_S;\nexport const MPerS_TO_MiPerH = 1 / MiPerH_TO_MPerS;\n\n\n","// conversions.ts\nimport {\n METERS_PER_KM,\n METERS_PER_MILE,\n METERS_PER_FOOT,\n MINUTE,\n HOUR,\n DAY,\n\n} from \"./constants\";\nimport { safeMultiply, safeDivide } from \"./safe_math\";\nimport type { CanonTime, CanonDist, DistanceUnit, TimeUnit, ConvertDistance, ConvertTime, ConvertSpeed, OutDist, OutTimeType, OutSpeedType } from './scaleInterfaces';\n/*───────────────────────────────────────────────────────────────\n 🧭 CANONICAL MAPPINGS\n───────────────────────────────────────────────────────────────*/\n\nexport const DIST_ALIASES: Record<string, CanonDist> = {\n m: \"m\", meter: \"m\", meters: \"m\",\n km: \"km\", kms: \"km\", kilometer: \"km\", kilometers: \"km\",\n mi: \"mi\", mile: \"mi\", miles: \"mi\",\n ft: \"ft\", f: \"ft\", foot: \"ft\", feet: \"ft\",\n};\n\nexport const TIME_ALIASES: Record<string, CanonTime> = {\n s: \"s\", sec: \"s\", second: \"s\", seconds: \"s\",\n min: \"min\", m: \"min\", minute: \"min\", minutes: \"min\",\n h: \"h\", hr: \"h\", hour: \"h\", hours: \"h\",\n day: \"day\", d: \"day\", days: \"day\",\n};\n\nexport const DIST_FACTORS: Record<CanonDist, number> = {\n m: 1,\n km: METERS_PER_KM,\n mi: METERS_PER_MILE,\n ft: METERS_PER_FOOT,\n};\n\nexport const TIME_FACTORS: Record<CanonTime, number> = {\n s: 1,\n min: MINUTE,\n h: HOUR,\n day: DAY,\n};\n\n/*───────────────────────────────────────────────────────────────\n 🔍 CANONICALIZATION HELPERS\n───────────────────────────────────────────────────────────────*/\n\nexport function canonDist(u: DistanceUnit | string | undefined): CanonDist {\n const key = (u ?? \"m\").toString().toLowerCase();\n const canon = DIST_ALIASES[key];\n if (!canon) throw new Error(`Unknown distance unit: ${u}`);\n return canon;\n}\n\nexport function canonTime(u: TimeUnit | string | undefined): CanonTime {\n const key = (u ?? \"s\").toString().toLowerCase();\n const canon = TIME_ALIASES[key];\n if (!canon) throw new Error(`Unknown time unit: ${u}`);\n return canon;\n}\n\n/*───────────────────────────────────────────────────────────────\n ⚖️ NORMALIZATION HELPERS\n───────────────────────────────────────────────────────────────*/\n\nexport function distanceToMeters(d: number, unit: DistanceUnit | string): number {\n const u = canonDist(unit);\n return safeMultiply(d, DIST_FACTORS[u]);\n}\nexport function metersToDistance(v: number, unit: DistanceUnit | string): number {\n const u = canonDist(unit);\n return safeDivide(v, DIST_FACTORS[u]);\n}\n\nexport function timeToSeconds(t: number, unit: TimeUnit | string): number {\n const u = canonTime(unit);\n return safeMultiply(t, TIME_FACTORS[u]);\n}\nexport function secondsToTime(v: number, unit: TimeUnit | string): number {\n const u = canonTime(unit);\n return safeDivide(v, TIME_FACTORS[u]);\n}\n\n/*───────────────────────────────────────────────────────────────\n 🚀 SPEED CONVERSIONS (normalize / unnormalize)\n───────────────────────────────────────────────────────────────*/\n\nexport function speedToMps(\n v: number,\n distUnit: DistanceUnit | string,\n timeUnit: TimeUnit | string\n): number {\n const du = canonDist(distUnit);\n const tu = canonTime(timeUnit);\n return v * (DIST_FACTORS[du] / TIME_FACTORS[tu]);\n}\n\nexport function mpsToSpeed(\n vMps: number,\n distUnit: DistanceUnit | string,\n timeUnit: TimeUnit | string\n): number {\n const du = canonDist(distUnit);\n const tu = canonTime(timeUnit);\n return vMps * (TIME_FACTORS[tu] / DIST_FACTORS[du]);\n}\n\n/*───────────────────────────────────────────────────────────────\n 🎯 UNIVERSAL CONVERTERS\n───────────────────────────────────────────────────────────────*/\n\nexport function convertDistance({\n d,\n fromDist,\n toDist,\n vOnly = true,\n}: ConvertDistance): OutDist {\n const m = distanceToMeters(d, fromDist);\n const D = canonDist(toDist ?? \"m\");\n const out = metersToDistance(m, D);\n return vOnly ? out : { d: out, D };\n}\n\nexport function convertTime({\n t,\n fromTime,\n toTime,\n vOnly = true,\n}: ConvertTime): OutTimeType {\n const sec = timeToSeconds(t, fromTime);\n const T = canonTime(toTime ?? \"s\");\n const out = secondsToTime(sec, T);\n return vOnly ? out : { t: out, T };\n}\n\nexport function convertSpeed({\n v,\n fromDist,\n fromTime,\n toDist,\n toTime,\n vOnly = true,\n}: ConvertSpeed): OutSpeedType {\n const mps = speedToMps(v, fromDist, fromTime);\n const d = canonDist(toDist ?? \"m\");\n const t = canonTime(toTime ?? \"s\");\n const out = mpsToSpeed(mps, d, t);\n return vOnly ? out : { v: out, d, t };\n}\n\n/*───────────────────────────────────────────────────────────────\n 🧮 GENERIC “NORMALIZE / UNNORMALIZE” INTERFACES\n───────────────────────────────────────────────────────────────*/\n\nexport interface UnitConverter<T> {\n normalize: (value: number, unit: T) => number;\n unnormalize: (value: number, unit: T) => number;\n}\n\nexport const DistanceConverter: UnitConverter<DistanceUnit> = {\n normalize: distanceToMeters,\n unnormalize: metersToDistance,\n};\n\nexport const TimeConverter: UnitConverter<TimeUnit> = {\n normalize: timeToSeconds,\n unnormalize: secondsToTime,\n};\n\nexport const SpeedConverter: UnitConverter<[DistanceUnit, TimeUnit]> = {\n normalize: (v: number, [du, tu]) => speedToMps(v, du, tu),\n unnormalize: (v: number, [du, tu]) => mpsToSpeed(v, du, tu),\n};\n\n/*───────────────────────────────────────────────────────────────\n 🧩 COMPATIBILITY WRAPPERS (legacy aliases)\n───────────────────────────────────────────────────────────────*/\n\nexport const toMeters = distanceToMeters;\nexport const fromMeters = metersToDistance;\nexport const toSeconds = timeToSeconds;\nexport const fromSeconds = secondsToTime;\n\nexport const velocityToMs = (\n value: number,\n unit: string\n): number => speedToMps(value, unit, \"s\");\n\nexport const velocityFromMs = (\n value: number,\n unit: string\n): number => mpsToSpeed(value, unit, \"s\");\n\n/** Non-canonical helper for arbitrary rate conversion, e.g. ft/day → m/s */\nexport const fromMps = (\n v: number,\n dist_unit: DistanceUnit | string,\n time_unit: TimeUnit | string\n): number => mpsToSpeed(v, dist_unit, time_unit);\n\n/*───────────────────────────────────────────────────────────────\n 📊 UTILITIES\n───────────────────────────────────────────────────────────────*/\n\nexport const isFiniteNum = (x: any): x is number => Number.isFinite(x);\nexport const fmt = (n: number, digits = 2) =>\n isFiniteNum(n) ? n.toFixed(digits) : \"N/A\";\n\n","// Function to check time interval\nexport function isTimeInterval(timeObj: number, interval: number): boolean {\n return (Date.now() / 1000 - timeObj) < (interval - 1);\n}\n","// src/functions/typeUtils/numUtils.ts\nimport {getLogString} from '@putkoff/abstract-logger';\nconst FILE_LOCATION = 'src/functions/typeUtils/numUtils.ts'\n/**\n * Recursively traverse the object and convert BigInts to numbers or strings.\n *\n * @param {object|array} obj - The object to traverse\n * @param {boolean} convertToNumber - Whether to convert BigInt to Number (default is true)\n * @returns {object|array} - The transformed object\n */\nexport function convertBigInts(obj: any, convertToNumber = true): any {\n if (obj === null || obj === undefined) return obj;\n\n try {\n if (typeof obj === 'bigint') {\n return convertToNumber ? Number(obj) : obj.toString();\n }\n\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return obj.map((item) => convertBigInts(item, convertToNumber));\n }\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [key, convertBigInts(value, convertToNumber)])\n );\n }\n } catch (error: any) {\n \n }\n return obj;\n}\n","export function getSafeDocument(): Document | undefined {\n return typeof document !== 'undefined' ? document : undefined;\n}\n\n// 3) Overloads for 1- and 2-level deep props on Document\nexport function getDocumentProp<K1 extends keyof Document>(\n prop1: K1\n): Document[K1] | undefined;\nexport function getDocumentProp<\n K1 extends keyof Document,\n K2 extends keyof NonNullable<Document[K1]>\n>(\n prop1: K1,\n prop2: K2\n): NonNullable<Document[K1]>[K2] | undefined;\nexport function getDocumentProp(...keys: string[]) {\n let obj: any = getSafeDocument();\n for (const k of keys) {\n if (obj == null || typeof obj !== 'object') return undefined;\n obj = obj[k];\n }\n return obj;\n}\n","/**\n * Returns the global window object if it exists, otherwise undefined.\n */\nexport function getSafeWindow(): Window | undefined {\n return typeof window !== 'undefined' ? window : undefined;\n}\n\n/**\n * Safely call a method on window by name.\n *\n * @param method The Window method to call (e.g. \"alert\", \"open\", etc.).\n * @param args Arguments to pass to that method.\n * @returns The method’s return value, or undefined if\n * window/method isn’t available or throws.\n */\nexport function callWindowMethod<\n K extends keyof Window,\n F extends Window[K] = Window[K],\n Args extends any[] = F extends (...a: infer P) => any ? P : never,\n R = F extends (...a: any) => infer U ? U : void\n>(\n method: K,\n ...args: Args\n): R | undefined {\n const w = getSafeWindow();\n if (!w) return undefined;\n\n const fn = w[method];\n if (typeof fn !== 'function') return undefined;\n\n try {\n // cast to any so TS doesn’t complain about apply/invoke\n return (fn as any)(...args) as R;\n } catch {\n return undefined;\n }\n}\n\n\n\n/** overloads for 1‐ and 2‐level deep props */\nexport function getWindowProp<K1 extends keyof Window>(\n prop1: K1\n): Window[K1] | undefined;\nexport function getWindowProp<\n K1 extends keyof Window,\n K2 extends keyof NonNullable<Window[K1]>\n>(\n prop1: K1,\n prop2: K2\n): NonNullable<Window[K1]>[K2] | undefined;\n\n/** implementation */\nexport function getWindowProp(...keys: string[]) {\n let obj: any = getSafeWindow();\n for (const k of keys) {\n if (obj == null || typeof obj !== 'object') return undefined;\n obj = obj[k];\n }\n return obj;\n}\n\nexport function getWindowHost(){\n return getWindowProp('location','host');\n}","import { safeGlobalProp } from \"./../imports\";\n\nexport async function readJsonFileBrowser<T = any>(\n url: string\n): Promise<T | null> {\n const fetchFn = safeGlobalProp<typeof fetch>(\"fetch\");\n if (typeof fetchFn !== \"function\") return null;\n\n try {\n const res = await fetchFn(url);\n if (!res.ok) return null;\n return (await res.json()) as T;\n } catch {\n return null;\n }\n}\n","import { readFileSync } from \"node:fs\";\nimport { resolve, isAbsolute } from \"node:path\";\n\nexport function readJsonFileNode<T = any>(\n relativeOrAbsolutePath: string\n): T | null {\n try {\n const filePath = isAbsolute(relativeOrAbsolutePath)\n ? relativeOrAbsolutePath\n : resolve(process.cwd(), relativeOrAbsolutePath);\n\n return JSON.parse(readFileSync(filePath, \"utf8\")) as T;\n } catch {\n return null;\n }\n}\n","export async function readJsonFile<T = any>(\n relativeOrAbsolutePath: string\n): Promise<T | null> {\n if (typeof process !== \"undefined\" && process.versions?.node) {\n const mod = await import(\"./readJsonFile.node\");\n return mod.readJsonFileNode<T>(relativeOrAbsolutePath);\n } else {\n const mod = await import(\"./readJsonFile.browser\");\n return mod.readJsonFileBrowser<T>(relativeOrAbsolutePath);\n }\n}\nexport async function getConfigContent<T = Record<string, any>>(): Promise<T | null> {\n try {\n // `readJsonFile` should throw if the file isn’t there or isn’t valid JSON\n const cfg = await readJsonFile<T>('./config.json');\n return cfg;\n } catch {\n // swallow errors & return null so callers can detect “no config”\n return null;\n }\n}","// src/config_utils.ts\nimport type { AppConfig } from \"./../imports\";\nimport { safeGlobalProp, readJsonFile } from \"./../imports\";\n// src/functions/config_utils/src/config_utils.ts\n\n\n\nlet _cachedConfig: any = null;\n\nexport async function loadConfig(filePath: string | null = null): Promise<AppConfig> {\n if (_cachedConfig) {\n return _cachedConfig;\n }\n\n // 1) figure out where config.json lives\n let configUrl: string;\n if (filePath) {\n configUrl = filePath;\n } else if (typeof import.meta !== 'undefined' && typeof import.meta.url === 'string') {\n // ES module: resolve relative to this file\n\n try {\n const mod: any = await (new Function(\n \"return import('./config.json').catch(() => ({}))\"\n ))();\n _cachedConfig = mod.default ?? {};\n return _cachedConfig;\n } catch {\n configUrl = 'config.json';\n }\n } else {\n // browser fallback\n const baseURI = safeGlobalProp<Document>('document', 'baseURI');\n try {\n configUrl =\n typeof baseURI === 'string'\n ? new URL('config.json', baseURI).href\n : 'config.json';\n } catch {\n configUrl = 'config.json';\n }\n }\n\n // 2) if we have a fetch, try HTTP(S)\n const fetchFn = safeGlobalProp<typeof fetch>('fetch');\n if (typeof fetchFn === 'function') {\n try {\n const res = await fetchFn(configUrl);\n if (res.ok) {\n const json = await res.json();\n // cache & return\n _cachedConfig = (json as AppConfig) ?? {};\n return _cachedConfig;\n }\n } catch {\n /* swallow */\n }\n }\n\n // 3) Node fallback: try reading from disk (requires your readJsonFile util)\n try {\n const disk = await readJsonFile<AppConfig>(configUrl);\n _cachedConfig = disk ?? {};\n return _cachedConfig;\n } catch {\n /* swallow */\n }\n\n // 4) if all else fails, return an empty config\n _cachedConfig = {} as AppConfig;\n return _cachedConfig;\n}\n\n/** \n * getConfig(): Promise<AppConfig> \n * getConfig(key): Promise<AppConfig[K]> \n */\nexport function getConfig(): Promise<AppConfig>;\nexport function getConfig<K extends keyof AppConfig>(key: K): Promise<AppConfig[K]>;\nexport async function getConfig<K extends keyof AppConfig>(\n key?: K\n): Promise<AppConfig | AppConfig[K]> {\n const cfg = await loadConfig();\n return key != null ? (cfg[key] as AppConfig[K]) : cfg;\n}\n\n","import {eatAll} from './../imports';\n/**\n * Processes keywords by checking if keywords is a string and splitting it.\n * Then cleans each keyword using `eatAll` with a set of characters to remove.\n *\n * @param keywords - The keywords as a comma-separated string or as an array.\n * @returns An array of cleaned keywords.\n */\nexport function processKeywords(keywords: string | string[]): string[] {\n let keywordArray: string[];\n\n // If keywords is a string, split it on commas\n if (typeof keywords === \"string\") {\n keywordArray = keywords.split(\",\");\n } else {\n keywordArray = keywords;\n }\n\n // Clean each keyword by removing unwanted characters\n return keywordArray.map(keyword =>\n eatAll(keyword, [\",\", \"\\n\", \"\\t\", \" \", \"#\"])\n );\n}\n/**\n * Constructs a keyword string where each keyword is prefixed with a hash (#).\n *\n * @param keywords - An array of keywords.\n * @returns A string with each keyword prefixed by '#'.\n */\nexport function get_keyword_string(keywords: any): string {\n keywords = processKeywords(keywords)\n let allString = \"\";\n for (const keyword of keywords) {\n allString += ` #${keyword}`;\n }\n return allString;\n}","// Function to compare MB\nexport function exceedsMbLimit(limitMb: number, payloadMb: number): boolean {\n return payloadMb > limitMb;\n}\nexport function safeJsonSizeInMb(value: unknown): number {\n const seen = new WeakSet();\n\n const json = JSON.stringify(\n value,\n (_, v) => {\n if (typeof v === \"bigint\") return v.toString();\n if (typeof v === \"object\" && v !== null) {\n if (seen.has(v)) return \"[Circular]\";\n seen.add(v);\n }\n return v;\n }\n );\n\n return Buffer.byteLength(json, \"utf8\") / (1024 * 1024);\n}\n\nexport function dataSizeInMb(data: unknown): number {\n const size =\n typeof data === \"string\"\n ? Buffer.byteLength(data, \"utf8\")\n : Buffer.byteLength(JSON.stringify(data), \"utf8\");\n\n return size / (1024 * 1024);\n}\n\nexport function getJsonSizeInMb(json: unknown): number {\n return Buffer.byteLength(JSON.stringify(json), \"utf8\") / (1024 * 1024);\n}\n\n// Function to calculate data size in KB\nexport function dataSize(data: any): number {\n let size = 0;\n if (typeof data === 'string') {\n size = Buffer.byteLength(data, 'utf8');\n } else if (Buffer.isBuffer(data)) {\n size = data.length;\n } else if (typeof data === 'object') {\n size = Buffer.byteLength(JSON.stringify(data), 'utf8');\n } else {\n size = Buffer.byteLength(String(data), 'utf8');\n }\n return size / 1000; // Convert to kilobytes\n}\n\n","\nexport function getLastCaller(skip = [\"debugPrint\"]) {\n const stack = new Error().stack;\n if (!stack) return null;\n\n const lines = stack\n .split(\"\\n\")\n .map(l => l.trim())\n .slice(1); // drop \"Error\"\n\n for (const line of lines) {\n // Example:\n // at processSingleAddress (/path/file.ts:142:7)\n const match =\n line.match(/at (.+?) \\((.+?):(\\d+):(\\d+)\\)/) ||\n line.match(/at (.+?):(\\d+):(\\d+)/);\n\n if (!match) continue;\n\n const functionName = match[1] ?? \"anonymous\";\n\n if (skip.includes(functionName)) continue;\n\n return {\n functionName,\n file: match[2],\n line: Number(match[3]),\n column: Number(match[4]),\n };\n }\n\n return null;\n}\n","import {getLastCaller,inspect} from './../imports';\nexport function debugPrint(\n value: unknown,\n label: string | null = null\n) {\n const caller = getLastCaller();\n\n const header =\n label ??\n (caller\n ? `${caller.functionName} @ ${caller.file}:${caller.line}`\n : \"object\");\n\n console.log(`\\n🔍 ${header}`);\n console.log(\n inspect(value, {\n depth: null,\n colors: true,\n compact: false,\n maxArrayLength: null,\n })\n );\n}\n"],"names":["path.dirname","path.basename","path.extname","path.relative","path.sep"],"mappings":"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"}
|