@putkoff/abstract-utilities 1.0.47 → 1.0.52

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.
Files changed (94) hide show
  1. package/dist/cjs/index.js +285 -98
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/esm/index.js +257 -98
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/index.d.ts +83 -50
  6. package/dist/types/functions/auth_utils/imports.d.ts +0 -0
  7. package/dist/types/functions/auth_utils/index.d.ts +0 -0
  8. package/dist/types/functions/auth_utils/src/index.d.ts +0 -0
  9. package/dist/types/functions/auth_utils/src/token_utils.d.ts +0 -0
  10. package/dist/types/functions/config_utils/imports.d.ts +0 -0
  11. package/dist/types/functions/config_utils/index.d.ts +0 -0
  12. package/dist/types/functions/config_utils/src/config_utils.d.ts +0 -0
  13. package/dist/types/functions/config_utils/src/index.d.ts +0 -0
  14. package/dist/types/functions/constants_utils/index.d.ts +0 -0
  15. package/dist/types/functions/constants_utils/src/constants.d.ts +0 -0
  16. package/dist/types/functions/constants_utils/src/index.d.ts +0 -0
  17. package/dist/types/functions/env_utils/imports.d.ts +0 -0
  18. package/dist/types/functions/env_utils/index.d.ts +0 -0
  19. package/dist/types/functions/env_utils/src/index.d.ts +0 -0
  20. package/dist/types/functions/env_utils/src/window_utils.d.ts +0 -0
  21. package/dist/types/functions/fetch_utils/imports.d.ts +0 -0
  22. package/dist/types/functions/fetch_utils/index.d.ts +0 -0
  23. package/dist/types/functions/fetch_utils/src/fetch_utils.d.ts +0 -0
  24. package/dist/types/functions/fetch_utils/src/index.d.ts +0 -0
  25. package/dist/types/functions/fetch_utils/src/url_utils.d.ts +1 -0
  26. package/dist/types/functions/fetch_utils/src/utils.d.ts +0 -0
  27. package/dist/types/functions/index.d.ts +0 -0
  28. package/dist/types/functions/math_utils/constants.d.ts +0 -0
  29. package/dist/types/functions/math_utils/conversions.d.ts +0 -0
  30. package/dist/types/functions/math_utils/index.d.ts +0 -0
  31. package/dist/types/functions/math_utils/safe_math.d.ts +0 -0
  32. package/dist/types/functions/math_utils/scaleInterfaces.d.ts +4 -0
  33. package/dist/types/functions/path_utils/imports.d.ts +0 -0
  34. package/dist/types/functions/path_utils/index.d.ts +0 -0
  35. package/dist/types/functions/path_utils/src/base_dirs.d.ts +0 -0
  36. package/dist/types/functions/path_utils/src/function_dirs.d.ts +0 -0
  37. package/dist/types/functions/path_utils/src/index.d.ts +0 -0
  38. package/dist/types/functions/path_utils/src/misc_dirs.d.ts +0 -0
  39. package/dist/types/functions/path_utils/src/path_utils.d.ts +42 -6
  40. package/dist/types/functions/path_utils/src/paths.d.ts +0 -0
  41. package/dist/types/functions/path_utils/src/src_dirs.d.ts +0 -0
  42. package/dist/types/functions/read_utils/imports.d.ts +0 -0
  43. package/dist/types/functions/read_utils/index.d.ts +0 -0
  44. package/dist/types/functions/read_utils/src/index.d.ts +0 -0
  45. package/dist/types/functions/read_utils/src/utils.d.ts +0 -0
  46. package/dist/types/functions/rndm_utils/imports.d.ts +0 -0
  47. package/dist/types/functions/rndm_utils/index.d.ts +0 -0
  48. package/dist/types/functions/rndm_utils/src/index.d.ts +0 -0
  49. package/dist/types/functions/rndm_utils/src/utils.d.ts +0 -0
  50. package/dist/types/functions/safe_utils/imports.d.ts +0 -0
  51. package/dist/types/functions/safe_utils/index.d.ts +0 -0
  52. package/dist/types/functions/safe_utils/src/index.d.ts +0 -0
  53. package/dist/types/functions/safe_utils/src/safe_document.d.ts +0 -0
  54. package/dist/types/functions/safe_utils/src/safe_globals.d.ts +0 -0
  55. package/dist/types/functions/safe_utils/src/safe_storage.d.ts +0 -0
  56. package/dist/types/functions/safe_utils/src/safe_window.d.ts +0 -0
  57. package/dist/types/functions/string_utils/index.d.ts +0 -0
  58. package/dist/types/functions/string_utils/src/index.d.ts +0 -0
  59. package/dist/types/functions/string_utils/src/string_utils.d.ts +12 -28
  60. package/dist/types/functions/type_utils/imports.d.ts +0 -0
  61. package/dist/types/functions/type_utils/index.d.ts +0 -0
  62. package/dist/types/functions/type_utils/src/clean_utils.d.ts +0 -0
  63. package/dist/types/functions/type_utils/src/ensure_utils.d.ts +22 -14
  64. package/dist/types/functions/type_utils/src/imports.d.ts +0 -0
  65. package/dist/types/functions/type_utils/src/index.d.ts +0 -0
  66. package/dist/types/functions/type_utils/src/json_utils.d.ts +0 -0
  67. package/dist/types/functions/type_utils/src/list_utils.d.ts +4 -0
  68. package/dist/types/functions/type_utils/src/mime_utils.d.ts +0 -0
  69. package/dist/types/functions/type_utils/src/type_utils.d.ts +0 -0
  70. package/dist/types/functions/ui_utils/imports.d.ts +0 -0
  71. package/dist/types/functions/ui_utils/index.d.ts +0 -0
  72. package/dist/types/functions/ui_utils/src/button.d.ts +0 -0
  73. package/dist/types/functions/ui_utils/src/checkbox.d.ts +0 -0
  74. package/dist/types/functions/ui_utils/src/index.d.ts +0 -0
  75. package/dist/types/functions/ui_utils/src/input.d.ts +0 -0
  76. package/dist/types/functions/ui_utils/src/spinner.d.ts +0 -0
  77. package/dist/types/functions/variable_utils/imports.d.ts +0 -0
  78. package/dist/types/functions/variable_utils/index.d.ts +0 -0
  79. package/dist/types/functions/variable_utils/src/index.d.ts +0 -0
  80. package/dist/types/functions/variable_utils/src/variable_utils.d.ts +0 -0
  81. package/dist/types/index.d.ts +0 -0
  82. package/dist/types/types/index.d.ts +0 -0
  83. package/dist/types/types/src/ChangePassword.d.ts +0 -0
  84. package/dist/types/types/src/Files.d.ts +0 -0
  85. package/dist/types/types/src/index.d.ts +0 -0
  86. package/dist/types/types/src/login.d.ts +0 -0
  87. package/dist/types/types/src/logout.d.ts +0 -0
  88. package/dist/types/types/src/utils.d.ts +0 -0
  89. package/dist/types/utils/imports.d.ts +0 -0
  90. package/dist/types/utils/index.d.ts +0 -0
  91. package/dist/types/utils/src/Input.d.ts +0 -0
  92. package/dist/types/utils/src/config.d.ts +0 -0
  93. package/dist/types/utils/src/index.d.ts +0 -0
  94. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/functions/safe_utils/src/safe_document.ts","../../src/functions/safe_utils/src/safe_globals.ts","../../src/functions/safe_utils/src/safe_storage.ts","../../src/functions/safe_utils/src/safe_window.ts","../../src/functions/auth_utils/src/token_utils.ts","../../src/functions/constants_utils/src/constants.ts","../../src/functions/env_utils/src/window_utils.ts","../../node_modules/tslib/tslib.es6.js","../../src/functions/read_utils/src/utils.ts","../../src/functions/fetch_utils/src/utils.ts","../../src/functions/fetch_utils/src/fetch_utils.ts","../../node_modules/path-browserify/index.js","../../src/functions/fetch_utils/src/url_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","../../shims/empty.js","../../src/functions/type_utils/src/mime_utils.ts","../../src/functions/string_utils/src/string_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/ui_utils/src/button.tsx","../../src/functions/ui_utils/src/checkbox.tsx","../../src/functions/ui_utils/src/input.tsx","../../src/functions/ui_utils/src/spinner.tsx","../../src/functions/config_utils/src/config_utils.ts","../../src/functions/variable_utils/src/variable_utils.ts"],"sourcesContent":["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 * Safely walk `globalThis` (or window/document) by a chain of property names.\n * Returns `undefined` if any step is missing.\n */\nexport function safeGlobalProp<T = any>(...path: string[]): T | undefined {\n let obj: any = globalThis;\n for (const key of path) {\n if (obj == null || typeof obj !== \"object\" || !(key in obj)) {\n return undefined;\n }\n obj = obj[key];\n }\n return obj as T;\n}\n","\nimport {safeGlobalProp} from './safe_globals'\n/**\n * Returns `window` if running in a browser, otherwise `undefined`.\n */\n\n\nexport function getSafeLocalStorage(): Storage | undefined {\n if (typeof window === 'undefined') return undefined;\n try {\n return window.localStorage;\n } catch {\n return undefined; // e.g. Safari private-mode block\n }\n}\n\n/**\n * Call a Storage method by name, silencing any errors or missing storage.\n *\n * @param method One of the keys of the Storage interface: \"getItem\", \"setItem\", etc.\n * @param args The arguments you’d normally pass to that method.\n * @returns The method’s return value, or undefined if storage/method isn’t available.\n */\nexport function callStorage<\n K extends keyof Storage\n>(\n method: K,\n ...args: Parameters<Storage[K]>\n): ReturnType<Storage[K]> | undefined {\n const storage = getSafeLocalStorage();\n if (!storage) return undefined;\n\n const fn = storage[method];\n if (typeof fn !== 'function') return undefined;\n\n try {\n // @ts-ignore – TS can’t infer that this is callable\n return fn.apply(storage, args) as ReturnType<Storage[K]>;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Safely call storage methods (`localStorage` or `sessionStorage`) without blowing up.\n * Returns `undefined` on any error.\n */\nexport function safeStorage<\n S extends \"localStorage\" | \"sessionStorage\",\n K extends keyof Storage\n>(\n storageName: S,\n method: K,\n ...args: Parameters<Storage[K]>\n): ReturnType<Storage[K]> | undefined {\n try {\n const store = safeGlobalProp<Storage>(storageName);\n if (!store || typeof store[method] !== \"function\") return undefined;\n // @ts-ignore\n return store[method](...args);\n } catch {\n return undefined;\n }\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}","/**\n * Helpers for dealing with the JWT stored in localStorage.\n */\nimport type { JwtPayload } from './../imports'\nimport { callStorage } from './../imports'\n/**\n***Changes**:\n*- Updated import path for `InputProps` to `../../types/interfaces`.\n*\n*3. **Token Utilities** (`src/functions/auth/token_utils.ts`):\n* Copy from `/var/www/abstractendeavors/my-login-app/src/functions/auth_utils/token_utils.ts`.\n*\n*/\n/** Read raw JWT from LocalStorage (or null if absent) */\nexport function getToken(): string | null | any {\n return callStorage('getItem', 'token');\n}\n\n\nexport function isLoggedIn() {\n const tok = getToken();\n return !!tok && !isTokenExpired(tok ?? \"\");\n}\n\n\n/**\n * Add a Bearer Authorization header.\n * A shallow copy of headers is returned so callers can keep chaining.\n */\nexport function getAuthorizationHeader(\n headers: Record<string, string> | null = {},\n token: string | null = null\n): Record<string, string> {\n token = token ?? getToken();\n headers = headers || {}\n if (token) headers[\"Authorization\"] = `Bearer ${token}`;\n return { ...headers };\n}\n\n\n/** Throw + redirect if there’s no valid token; otherwise return it. */\nexport function requireToken(): string {\n const tok = getToken();\n if (!tok || isTokenExpired(tok)) {\n console.warn(\"→ No token or expired token, redirecting to login…\");\n localStorage.removeItem(\"token\");\n window.location.href = '/';\n throw new Error(\"Redirecting to login…\");\n }\n return tok;\n}\n\n\n\n/** True if token is structurally bad or its exp ≤ now. */\nexport function isTokenExpired(token: string): boolean {\n try {\n const payload = decodeJwt(token);\n return Date.now() / 1000 >= payload.exp;\n } catch {\n return true; // treat malformed token as expired\n }\n}\n\n/** Convenience wrapper: return username from the JWT (or null). */\nexport function currentUsername() {\n const tok = getToken();\n if (!tok) return null;\n try {\n const { username } = decodeJwt(tok);\n return username ?? null;\n } catch {\n return null;\n }\n}\nexport function currentUsernames() {\n const tok = getToken();\n if (!tok) return null;\n try {\n const parts = tok.split(\".\");\n if (parts.length !== 3) return null;\n let b64 = parts[1].replace(/-/g, \"+\").replace(/_/g, \"/\");\n b64 = b64.padEnd(Math.ceil(b64.length / 4) * 4, \"=\");\n const jsonText = atob(b64);\n const payload = JSON.parse(jsonText);\n return payload.username ?? null;\n } catch {\n return null;\n }\n}\n\n/** Remove the JWT from LocalStorage */\nexport function removeToken(): void {\n try {\n callStorage('removeItem', 'token');\n } catch (err) {\n console.warn(\"Failed to remove token:\", err);\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* internals */\n/* ------------------------------------------------------------------ */\n\nexport function decodeJwt(token: string): JwtPayload {\n const [header, payload, signature] = token.split(\".\");\n if (!header || !payload || !signature) {\n throw new Error(\"Malformed JWT\");\n }\n\n // Handle URL-safe Base64\n let b64 = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Add padding if necessary\n b64 = b64.padEnd(Math.ceil(b64.length / 4) * 4, \"=\");\n\n const jsonText = atob(b64);\n return JSON.parse(jsonText) as JwtPayload;\n}","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","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { safeGlobalProp } from './../imports';\n// src/functions/read_utils/src/read_utils.ts\nlet fs: typeof import(\"fs\") | null = null;\nlet path: typeof import(\"path\") | null = null;\n\nasync function getFsModules() {\n if (!fs && !path && typeof process !== \"undefined\" && process.versions?.node) {\n try {\n // prevent bundlers from resolving these at build time\n fs = (new Function(\"return require('fs')\"))();\n path = (new Function(\"return require('path')\"))();\n } catch {\n fs = null;\n path = null;\n }\n }\n return { fs, path };\n}\n\n/**\n * Reads a JSON file, either via Node’s fs (if available)\n * or via window.fetch in the browser. Never throws — returns\n * the parsed object or null on any error.\n */\nexport async function readJsonFile<T = any>(\n relativeOrAbsolutePath: string\n): Promise<T | null> {\n // 1) Try Node.js fs (only at runtime, not bundled)\n if (typeof process !== \"undefined\" && process.versions?.node) {\n try {\n const { fs, path } = await getFsModules();\n if (fs && path) {\n const filePath = path.isAbsolute(relativeOrAbsolutePath)\n ? relativeOrAbsolutePath\n : path.resolve(process.cwd(), relativeOrAbsolutePath);\n\n const text = fs.readFileSync(filePath, \"utf8\");\n return JSON.parse(text) as T;\n }\n } catch {\n // swallow and fall back\n }\n }\n\n // 2) Try browser fetch\n const fetchFn = safeGlobalProp<typeof fetch>(\"fetch\");\n if (typeof fetchFn !== \"function\") {\n return null;\n }\n\n let url = relativeOrAbsolutePath;\n const baseURI = safeGlobalProp<string>(\"document\", \"baseURI\");\n if (baseURI) {\n try {\n url = new URL(relativeOrAbsolutePath, baseURI).href;\n } catch {\n /* keep url as-is */\n }\n }\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\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}\n\n// 2) Pull a single key out of that object\nexport async function getConfigVar<T = any>(key: any = null): Promise<T | undefined> {\n const cfg = await getConfigContent<Record<string, any>>();\n if (cfg && typeof cfg === 'object' && key in cfg) {\n return cfg[key] as T;\n }\n return undefined;\n}","import {FetchVariables,getAuthorizationHeader,getToken} 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 // inject auth if missing\n if (!result.Authorization) {\n const token: string | null = getToken();\n Object.assign(result, getAuthorizationHeader(result, token));\n }\n\n method = getMethod(method, body);\n\n // if it’s a multipart FormData, let the browser set the boundary header\n if (body instanceof FormData) {\n return result;\n }\n\n // otherwise for POST/PUT/PATCH default to JSON\n if (['POST', 'PUT', 'PATCH'].includes(method) && !result['Content-Type']) {\n result['Content-Type'] = 'application/json';\n }\n return result;\n}\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 {getAuthorizationHeader} from './../imports'\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 let url: string= endpoint;\n\n\n // 3) prepare headers & body\n headers = {\n ...(body instanceof FormData ? {} : { \"Content-Type\": \"application/json\" }),\n ...getAuthorizationHeader(),\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","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\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","export function ensure_list<T>(obj: T | T[]): T[] {\n const objArray = Array.isArray(obj) ? obj : [obj];\n return objArray;\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}\nexport function ensure_array(input: string | string[]): any {\n if (typeof input === 'string') {\n return [input];\n }\n if (Array.isArray(input)) {\n return input.map(item => ensure_string(item));\n }\n return [];\n}\nexport function ensure_string(obj: any) {\n return String(obj);\n}\n\nexport const assureList = ensure_list\nexport const assureString = ensure_string\nexport const assureNumber = ensure_number\nexport const assureArray = ensure_array\nexport const assure_list = ensure_list\nexport const assure_string = ensure_string\nexport const assure_number = ensure_number\nexport const assure_array = ensure_array\nexport const ensureList = ensure_list\nexport const ensureString = ensure_string\nexport const ensureNumber = ensure_number\nexport const ensureArray = ensure_array","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","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","// shims/empty.js\n// Fake Node APIs for browser builds — every fn is a harmless noop.\n\nexport function statSync() {\n throw new Error(\"fs.statSync is not available in browser\");\n}\nexport function readdirSync() {\n return [];\n}\n\n// For async fs/promises\nexport async function stat() {\n throw new Error(\"fs.promises.stat is not available in browser\");\n}\nexport async function readdir() {\n return [];\n}\n\n// Export default empty object for wildcard imports\nexport default {};","// mediaTypes.ts\nimport * as fs from \"node:fs\";\nimport * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\n/** ---- Types ---- */\nexport type MimeByExt = Record<string, string>;\nexport type MediaMap = Record<string, MimeByExt>;\nexport type MediaCategory = keyof typeof MIME_TYPES;\n\nexport interface MediaOptions {\n /** Alias to mirror the Python **kwargs['media_types'] behavior */\n media_types?: Iterable<string> | string[] | null;\n}\n\n/** ---- Data: large but explicit, mirrors your Python mapping ---- */\nexport const MIME_TYPES = {\n image: {\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".gif\": \"image/gif\",\n \".bmp\": \"image/bmp\",\n \".tiff\": \"image/tiff\",\n \".webp\": \"image/webp\",\n \".svg\": \"image/svg+xml\",\n \".ico\": \"image/vnd.microsoft.icon\",\n \".heic\": \"image/heic\",\n \".psd\": \"image/vnd.adobe.photoshop\",\n \".raw\": \"image/x-raw\",\n },\n video: {\n \".mp4\": \"video/mp4\",\n \".webm\": \"video/webm\",\n \".ogg\": \"video/ogg\",\n \".mov\": \"video/quicktime\",\n \".avi\": \"video/x-msvideo\",\n \".mkv\": \"video/x-matroska\",\n \".flv\": \"video/x-flv\",\n \".wmv\": \"video/x-ms-wmv\",\n \".3gp\": \"video/3gpp\",\n \".ts\": \"video/mp2t\",\n \".mpeg\": \"video/mpeg\",\n \".mpg\": \"video/mpg\",\n },\n audio: {\n \".mp3\": \"audio/mpeg\",\n \".wav\": \"audio/wav\",\n \".flac\": \"audio/flac\",\n \".aac\": \"audio/aac\",\n \".ogg\": \"audio/ogg\",\n \".m4a\": \"audio/mp4\",\n \".opus\": \"audio/opus\",\n },\n document: {\n \".pdf\": \"application/pdf\",\n \".doc\": \"application/msword\",\n \".docx\":\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \".odt\": \"application/vnd.oasis.opendocument.text\",\n \".txt\": \"text/plain\",\n \".rtf\": \"application/rtf\",\n \".md\": \"text/markdown\",\n \".markdown\": \"text/markdown\",\n \".tex\": \"application/x-tex\",\n \".log\": \"text/plain\",\n \".json\": \"application/json\",\n \".xml\": \"application/xml\",\n \".yaml\": \"application/x-yaml\",\n \".yml\": \"application/x-yaml\",\n \".ini\": \"text/plain\",\n \".cfg\": \"text/plain\",\n \".toml\": \"application/toml\",\n \".csv\": \"text/csv\",\n \".tsv\": \"text/tab-separated-values\",\n },\n presentation: {\n \".ppt\": \"application/vnd.ms-powerpoint\",\n \".pptx\":\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \".odp\": \"application/vnd.oasis.opendocument.presentation\",\n },\n spreadsheet: {\n \".xls\": \"application/vnd.ms-excel\",\n \".xlsx\":\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \".ods\": \"application/vnd.oasis.opendocument.spreadsheet\",\n \".csv\": \"text/csv\",\n \".tsv\": \"text/tab-separated-values\",\n },\n code: {\n \".py\": \"text/x-python\",\n \".java\": \"text/x-java-source\",\n \".c\": \"text/x-c\",\n \".cpp\": \"text/x-c++\",\n \".h\": \"text/x-c\",\n \".hpp\": \"text/x-c++\",\n \".js\": \"application/javascript\",\n \".cjs\": \"application/javascript\",\n \".mjs\": \"application/javascript\",\n \".jsx\": \"application/javascript\",\n \".ts\": \"application/typescript\",\n \".tsx\": \"application/typescript\",\n \".rb\": \"text/x-ruby\",\n \".php\": \"application/x-php\",\n \".go\": \"text/x-go\",\n \".rs\": \"text/rust\",\n \".swift\": \"text/x-swift\",\n \".kt\": \"text/x-kotlin\",\n \".sh\": \"application/x-shellscript\",\n \".bash\": \"application/x-shellscript\",\n \".ps1\": \"application/x-powershell\",\n \".sql\": \"application/sql\",\n \".yml\": \"application/x-yaml\",\n \".coffee\": \"text/coffeescript\",\n \".lua\": \"text/x-lua\",\n },\n archive: {\n \".zip\": \"application/zip\",\n \".tar\": \"application/x-tar\",\n \".gz\": \"application/gzip\",\n \".tgz\": \"application/gzip\",\n \".bz2\": \"application/x-bzip2\",\n \".xz\": \"application/x-xz\",\n \".rar\": \"application/vnd.rar\",\n \".7z\": \"application/x-7z-compressed\",\n \".iso\": \"application/x-iso9660-image\",\n \".dmg\": \"application/x-apple-diskimage\",\n \".jar\": \"application/java-archive\",\n \".war\": \"application/java-archive\",\n \".whl\": \"application/python-wheel\",\n \".egg\": \"application/python-egg\",\n },\n font: {\n \".ttf\": \"font/ttf\",\n \".otf\": \"font/otf\",\n \".woff\": \"font/woff\",\n \".woff2\": \"font/woff2\",\n \".eot\": \"application/vnd.ms-fontobject\",\n },\n executable: {\n \".exe\": \"application/vnd.microsoft.portable-executable\",\n \".dll\": \"application/vnd.microsoft.portable-executable\",\n \".bin\": \"application/octet-stream\",\n \".deb\": \"application/vnd.debian.binary-package\",\n \".rpm\": \"application/x-rpm\",\n },\n} as const;\n\n/** Mirror of MEDIA_TYPES in Python: category -> Set of extensions */\nexport const MEDIA_TYPES: Record<MediaCategory, Set<string>> = Object.fromEntries(\n Object.entries(MIME_TYPES).map(([cat, mapping]) => [\n cat,\n new Set(Object.keys(mapping)),\n ])\n) as Record<MediaCategory, Set<string>>;\n\n/** ---- Helpers ---- */\nfunction toCategorySet(\n categories?: Iterable<string> | string[] | null,\n): Set<MediaCategory> {\n const allCats = new Set(Object.keys(MIME_TYPES)) as Set<string>;\n if (!categories) {\n // all categories\n return new Set(allCats) as Set<MediaCategory>;\n }\n const out = new Set<MediaCategory>();\n for (const c of categories as Iterable<string>) {\n const key = String(c) as MediaCategory;\n if (allCats.has(key)) out.add(key);\n }\n return out.size ? out : (new Set(allCats) as Set<MediaCategory>);\n}\n\nfunction normalizeCategories<T extends MediaOptions | undefined>(\n categories?: Iterable<string> | string[] | null,\n opts?: T,\n): Set<MediaCategory> {\n const selected = categories ?? opts?.media_types ?? null;\n return toCategorySet(selected);\n}\n\nfunction extOf(input: string): string {\n // Behaves like pathlib.Path(...).suffix.lower(): last extension only; lowercased.\n let ext = path.extname(input || \"\");\n if (!ext && input && input.startsWith(\".\")) {\n // user passed \".jpg\" directly\n ext = input;\n }\n return (ext || \"\").toLowerCase();\n}\n\nfunction unionExts(categories: Set<MediaCategory>): Set<string> {\n const out = new Set<string>();\n for (const c of categories) {\n const set = MEDIA_TYPES[c];\n for (const e of set) out.add(e);\n }\n return out;\n}\n\n/** ---- API (Python parity) ---- */\n\n/**\n * Return a sub-map of MEDIA_TYPES for the given categories.\n * If categories is falsy, returns all categories.\n */\nexport function getMediaMap(\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): Partial<Record<MediaCategory, Set<string>>> {\n const cats = normalizeCategories(categories, opts);\n const result: Partial<Record<MediaCategory, Set<string>>> = {};\n for (const c of cats) result[c] = new Set(MEDIA_TYPES[c]);\n return result;\n}\n\n/**\n * Return a flat, sorted list of all extensions for the given categories.\n */\nexport function getMediaExts(\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): string[] {\n const cats = normalizeCategories(categories, opts);\n return Array.from(unionExts(cats)).sort();\n}\n\n/**\n * Given a file path or extension, return its media category (e.g. \"image\") or null.\n * Mirrors Python's confirm_type.\n */\nexport function confirmType(\n pathOrExt: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): MediaCategory | null {\n const cats = normalizeCategories(categories, opts);\n const ext = extOf(pathOrExt);\n // Preserve object insertion order like Python dict iteration\n for (const [category, exts] of Object.entries(MEDIA_TYPES) as [\n MediaCategory,\n Set<string>,\n ][]) {\n if (!cats.has(category)) continue;\n if (ext && exts.has(ext)) return category;\n }\n return null;\n}\n\n/**\n * True if the given file path or extension belongs to one of the categories.\n */\nexport function isMediaType(\n pathOrExt: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): boolean {\n return confirmType(pathOrExt, categories, opts) !== null;\n}\n\n/**\n * Look up the MIME type by extension; fall back to 'application/octet-stream'.\n */\nexport function getMimeType(pathOrExt: string): string {\n const ext = extOf(pathOrExt);\n for (const mapping of Object.values(MIME_TYPES)) {\n if (ext && mapping[ext as keyof typeof mapping]) {\n return mapping[ext as keyof typeof mapping] as string;\n }\n }\n return \"application/octet-stream\";\n}\n\nexport function getAllFileTypesSync(\n directory: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): string[] {\n // 🧩 Skip entirely if fs isn't available\n if (!fs || !path) return [];\n\n try {\n const stat = fs.statSync(directory);\n if (!stat.isDirectory()) return [];\n\n const cats = normalizeCategories(categories, opts);\n const wanted = unionExts(cats);\n const results: string[] = [];\n\n function walkSync(dir: string) {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n for (const ent of entries) {\n const full = path.join(dir, ent.name);\n if (ent.isDirectory()) {\n walkSync(full);\n } else if (ent.isFile()) {\n const ext = path.extname(ent.name).toLowerCase();\n if (wanted.has(ext)) results.push(full);\n }\n }\n }\n\n walkSync(directory);\n return results;\n } catch {\n return [];\n }\n}\n\nexport async function getAllFileTypes(\n directory: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): Promise<string[]> {\n // 🧩 Skip entirely if fsp isn't available\n if (!fsp || !path) return [];\n\n try {\n const stat = await fsp.stat(directory);\n if (!stat.isDirectory()) return [];\n\n const cats = normalizeCategories(categories, opts);\n const wanted = unionExts(cats);\n const results: string[] = [];\n\n async function walkAsync(dir: string): Promise<void> {\n const entries = await fsp.readdir(dir, { withFileTypes: true });\n for (const ent of entries) {\n const full = path.join(dir, ent.name);\n if (ent.isDirectory()) {\n await walkAsync(full);\n } else if (ent.isFile()) {\n const ext = path.extname(ent.name).toLowerCase();\n if (wanted.has(ext)) results.push(full);\n }\n }\n }\n\n await walkAsync(directory);\n return results;\n } catch {\n return [];\n }\n}\n\n\n/** Optional convenience re-exports that mirror your Python names */\nexport const get_all_file_types = getAllFileTypes;\nexport const get_media_map = getMediaMap;\nexport const get_media_exts = getMediaExts;\nexport const confirm_type = confirmType;\nexport const is_media_type = isMediaType;\nexport const get_mime_type = getMimeType;\n","import { assureString } 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\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 let objs = string.replace('-', '_').split('_');\n for (const obj of objs) {\n let 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}\n/**\n * Removes characters from the beginning of the string\n * if they are found in the list of characters.\n *\n * @param str - The input string.\n * @param listObjects - A string or an array of characters to remove.\n * @returns The modified string.\n */\nexport function eatInner(str: string, listObjects: string | string[]): string {\n if (!Array.isArray(listObjects)) {\n listObjects = [listObjects];\n }\n // Ensure str is a string\n str = String(str);\n\n // Remove characters from the beginning while they are in listObjects\n while (str.length > 0 && listObjects.includes(str[0])) {\n str = str.slice(1);\n }\n return str;\n}\n\n/**\n * Removes characters from the end of the string\n * if they are found in the list of characters.\n *\n * @param str - The input string.\n * @param listObjects - A string or an array of characters to remove.\n * @returns The modified string.\n */\nexport function eatOuter(str: string, listObjects: string | string[]): string {\n if (!Array.isArray(listObjects)) {\n listObjects = [listObjects];\n }\n // Ensure str is a string\n str = String(str);\n\n // Remove characters from the end while they are in listObjects\n while (str.length > 0 && listObjects.includes(str[str.length - 1])) {\n str = str.slice(0, -1);\n }\n return str;\n}\n\n/**\n * Removes characters from both the beginning and the end of the string\n * if they are found in the list of characters.\n *\n * @param str - The input string.\n * @param listObjects - A string or an array of characters to remove.\n * @returns The modified string.\n */\nexport function eatAll(str: string, listObjects: string | string[]): string {\n return eatOuter(eatInner(str, listObjects), listObjects);\n}\n\nexport function eatEnd(obj: string, endings: string[] = ['/']): string {\n let result = obj;\n let modified = true;\n while (modified) {\n modified = false;\n for (const ending of endings) {\n if (result.endsWith(ending)) {\n result = result.slice(0, -ending.length);\n modified = true;\n break;\n }\n }\n }\n return result;\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/** \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(file_path: string) {\n const ext = path.extname(file_path);\n return path.basename(file_path, 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 * Join multiple path segments, normalizing leading/trailing slashes.\n *\n * Usage:\n * make_path('/foo','bar','baz')\n * make_path(['/foo','bar','baz'])\n */\nexport function make_path(...paths: Array<string | string[]>): string {\n // If someone passed a single array, unwrap it:\n const pathArray: string[] = (\n paths.length === 1 && Array.isArray(paths[0])\n ? (paths[0] as string[])\n : (paths as string[])\n );\n\n let real_path = '';\n for (let i = 0; i < pathArray.length; i++) {\n let segment = pathArray[i];\n if (i === 0) {\n real_path = segment;\n } else {\n // remove any leading slash on this segment\n segment = segment.replace(/^\\/+/, '');\n // remove any trailing slash on the accumulator\n real_path = real_path.replace(/\\/+$/, '');\n real_path = `${real_path}/${segment}`;\n }\n }\n return real_path;\n}\n\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(eatInner(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}","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\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","export function Button({\n children,\n color = 'gray',\n variant = 'default',\n className = '',\n ...rest\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & {\n color?: 'gray' | 'green' | 'blue';\n variant?: 'default' | 'icon' | 'primary' | 'secondary';\n className?: string;\n}) {\n const base = 'rounded px-3 py-1 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 transition-colors duration-150';\n const variantStyles = {\n default: '',\n icon: 'p-1 bg-transparent hover:bg-gray-100',\n primary: 'text-white',\n secondary: '',\n };\n const palette = {\n gray:\n variant === 'primary'\n ? 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500'\n : 'bg-gray-200 hover:bg-gray-300 focus:ring-gray-400',\n green: 'bg-green-600 text-white hover:bg-green-700 focus:ring-green-500',\n blue:\n variant === 'primary'\n ? 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500'\n : 'bg-blue-200 hover:bg-blue-300 focus:ring-blue-400',\n };\n\n return (\n <button\n className={`${base} ${variantStyles[variant]} ${palette[color]} ${className}`}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import React from 'react';\nexport function Checkbox({\n label,\n ...rest\n}: React.InputHTMLAttributes<HTMLInputElement> & { label: string }) {\n return (\n <label className='flex items-center gap-2 mb-4'>\n <input type='checkbox' {...rest} />\n <span>{label}</span>\n </label>\n );\n}\n","import React from 'react';\nexport function Input({\n label,\n trailing,\n ...rest\n}: React.InputHTMLAttributes<HTMLInputElement> & {\n label: string;\n trailing?: React.ReactNode;\n}) {\n return (\n <label className='mb-4 block'>\n <span className='block text-sm font-medium mb-1'>{label}</span>\n <div className='flex gap-2'>\n <input\n className='flex-1 rounded border px-2 py-1 disabled:bg-gray-100'\n {...rest}\n />\n {trailing}\n </div>\n </label>\n );\n}\n\n\n","export function Spinner() {\n return (<p className='animate-pulse'>Loading…</p>);\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}"],"names":["path","path.extname","fs","fs.statSync","fs.readdirSync","path.join","stat","fsp.stat","fsp.readdir","path.dirname","path.basename","path.relative","path.sep","_jsx","_jsxs"],"mappings":"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","x_google_ignoreList":[7,11]}
1
+ {"version":3,"file":"index.js","sources":["../../src/functions/safe_utils/src/safe_document.ts","../../src/functions/safe_utils/src/safe_globals.ts","../../src/functions/safe_utils/src/safe_storage.ts","../../src/functions/safe_utils/src/safe_window.ts","../../src/functions/auth_utils/src/token_utils.ts","../../src/functions/constants_utils/src/constants.ts","../../src/functions/env_utils/src/window_utils.ts","../../node_modules/tslib/tslib.es6.js","../../src/functions/read_utils/src/utils.ts","../../src/functions/fetch_utils/src/utils.ts","../../src/functions/fetch_utils/src/fetch_utils.ts","../../node_modules/path-browserify/index.js","../../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","../../shims/empty.js","../../src/functions/type_utils/src/mime_utils.ts","../../src/functions/string_utils/src/string_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/ui_utils/src/button.tsx","../../src/functions/ui_utils/src/checkbox.tsx","../../src/functions/ui_utils/src/input.tsx","../../src/functions/ui_utils/src/spinner.tsx","../../src/functions/config_utils/src/config_utils.ts","../../src/functions/variable_utils/src/variable_utils.ts"],"sourcesContent":["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 * Safely walk `globalThis` (or window/document) by a chain of property names.\n * Returns `undefined` if any step is missing.\n */\nexport function safeGlobalProp<T = any>(...path: string[]): T | undefined {\n let obj: any = globalThis;\n for (const key of path) {\n if (obj == null || typeof obj !== \"object\" || !(key in obj)) {\n return undefined;\n }\n obj = obj[key];\n }\n return obj as T;\n}\n","\nimport {safeGlobalProp} from './safe_globals'\n/**\n * Returns `window` if running in a browser, otherwise `undefined`.\n */\n\n\nexport function getSafeLocalStorage(): Storage | undefined {\n if (typeof window === 'undefined') return undefined;\n try {\n return window.localStorage;\n } catch {\n return undefined; // e.g. Safari private-mode block\n }\n}\n\n/**\n * Call a Storage method by name, silencing any errors or missing storage.\n *\n * @param method One of the keys of the Storage interface: \"getItem\", \"setItem\", etc.\n * @param args The arguments you’d normally pass to that method.\n * @returns The method’s return value, or undefined if storage/method isn’t available.\n */\nexport function callStorage<\n K extends keyof Storage\n>(\n method: K,\n ...args: Parameters<Storage[K]>\n): ReturnType<Storage[K]> | undefined {\n const storage = getSafeLocalStorage();\n if (!storage) return undefined;\n\n const fn = storage[method];\n if (typeof fn !== 'function') return undefined;\n\n try {\n // @ts-ignore – TS can’t infer that this is callable\n return fn.apply(storage, args) as ReturnType<Storage[K]>;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Safely call storage methods (`localStorage` or `sessionStorage`) without blowing up.\n * Returns `undefined` on any error.\n */\nexport function safeStorage<\n S extends \"localStorage\" | \"sessionStorage\",\n K extends keyof Storage\n>(\n storageName: S,\n method: K,\n ...args: Parameters<Storage[K]>\n): ReturnType<Storage[K]> | undefined {\n try {\n const store = safeGlobalProp<Storage>(storageName);\n if (!store || typeof store[method] !== \"function\") return undefined;\n // @ts-ignore\n return store[method](...args);\n } catch {\n return undefined;\n }\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}","/**\n * Helpers for dealing with the JWT stored in localStorage.\n */\nimport type { JwtPayload } from './../imports'\nimport { callStorage } from './../imports'\n/**\n***Changes**:\n*- Updated import path for `InputProps` to `../../types/interfaces`.\n*\n*3. **Token Utilities** (`src/functions/auth/token_utils.ts`):\n* Copy from `/var/www/abstractendeavors/my-login-app/src/functions/auth_utils/token_utils.ts`.\n*\n*/\n/** Read raw JWT from LocalStorage (or null if absent) */\nexport function getToken(): string | null | any {\n return callStorage('getItem', 'token');\n}\n\n\nexport function isLoggedIn() {\n const tok = getToken();\n return !!tok && !isTokenExpired(tok ?? \"\");\n}\n\n\n/**\n * Add a Bearer Authorization header.\n * A shallow copy of headers is returned so callers can keep chaining.\n */\nexport function getAuthorizationHeader(\n headers: Record<string, string> | null = {},\n token: string | null = null\n): Record<string, string> {\n token = token ?? getToken();\n headers = headers || {}\n if (token) headers[\"Authorization\"] = `Bearer ${token}`;\n return { ...headers };\n}\n\n\n/** Throw + redirect if there’s no valid token; otherwise return it. */\nexport function requireToken(): string {\n const tok = getToken();\n if (!tok || isTokenExpired(tok)) {\n console.warn(\"→ No token or expired token, redirecting to login…\");\n localStorage.removeItem(\"token\");\n window.location.href = '/';\n throw new Error(\"Redirecting to login…\");\n }\n return tok;\n}\n\n\n\n/** True if token is structurally bad or its exp ≤ now. */\nexport function isTokenExpired(token: string): boolean {\n try {\n const payload = decodeJwt(token);\n return Date.now() / 1000 >= payload.exp;\n } catch {\n return true; // treat malformed token as expired\n }\n}\n\n/** Convenience wrapper: return username from the JWT (or null). */\nexport function currentUsername() {\n const tok = getToken();\n if (!tok) return null;\n try {\n const { username } = decodeJwt(tok);\n return username ?? null;\n } catch {\n return null;\n }\n}\nexport function currentUsernames() {\n const tok = getToken();\n if (!tok) return null;\n try {\n const parts = tok.split(\".\");\n if (parts.length !== 3) return null;\n let b64 = parts[1].replace(/-/g, \"+\").replace(/_/g, \"/\");\n b64 = b64.padEnd(Math.ceil(b64.length / 4) * 4, \"=\");\n const jsonText = atob(b64);\n const payload = JSON.parse(jsonText);\n return payload.username ?? null;\n } catch {\n return null;\n }\n}\n\n/** Remove the JWT from LocalStorage */\nexport function removeToken(): void {\n try {\n callStorage('removeItem', 'token');\n } catch (err) {\n console.warn(\"Failed to remove token:\", err);\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* internals */\n/* ------------------------------------------------------------------ */\n\nexport function decodeJwt(token: string): JwtPayload {\n const [header, payload, signature] = token.split(\".\");\n if (!header || !payload || !signature) {\n throw new Error(\"Malformed JWT\");\n }\n\n // Handle URL-safe Base64\n let b64 = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Add padding if necessary\n b64 = b64.padEnd(Math.ceil(b64.length / 4) * 4, \"=\");\n\n const jsonText = atob(b64);\n return JSON.parse(jsonText) as JwtPayload;\n}","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","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { safeGlobalProp } from './../imports';\n// src/functions/read_utils/src/read_utils.ts\nlet fs: typeof import(\"fs\") | null = null;\nlet path: typeof import(\"path\") | null = null;\n\nasync function getFsModules() {\n if (!fs && !path && typeof process !== \"undefined\" && process.versions?.node) {\n try {\n // prevent bundlers from resolving these at build time\n fs = (new Function(\"return require('fs')\"))();\n path = (new Function(\"return require('path')\"))();\n } catch {\n fs = null;\n path = null;\n }\n }\n return { fs, path };\n}\n\n/**\n * Reads a JSON file, either via Node’s fs (if available)\n * or via window.fetch in the browser. Never throws — returns\n * the parsed object or null on any error.\n */\nexport async function readJsonFile<T = any>(\n relativeOrAbsolutePath: string\n): Promise<T | null> {\n // 1) Try Node.js fs (only at runtime, not bundled)\n if (typeof process !== \"undefined\" && process.versions?.node) {\n try {\n const { fs, path } = await getFsModules();\n if (fs && path) {\n const filePath = path.isAbsolute(relativeOrAbsolutePath)\n ? relativeOrAbsolutePath\n : path.resolve(process.cwd(), relativeOrAbsolutePath);\n\n const text = fs.readFileSync(filePath, \"utf8\");\n return JSON.parse(text) as T;\n }\n } catch {\n // swallow and fall back\n }\n }\n\n // 2) Try browser fetch\n const fetchFn = safeGlobalProp<typeof fetch>(\"fetch\");\n if (typeof fetchFn !== \"function\") {\n return null;\n }\n\n let url = relativeOrAbsolutePath;\n const baseURI = safeGlobalProp<string>(\"document\", \"baseURI\");\n if (baseURI) {\n try {\n url = new URL(relativeOrAbsolutePath, baseURI).href;\n } catch {\n /* keep url as-is */\n }\n }\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\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}\n\n// 2) Pull a single key out of that object\nexport async function getConfigVar<T = any>(key: any = null): Promise<T | undefined> {\n const cfg = await getConfigContent<Record<string, any>>();\n if (cfg && typeof cfg === 'object' && key in cfg) {\n return cfg[key] as T;\n }\n return undefined;\n}","import {FetchVariables,getAuthorizationHeader,getToken} 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 // inject auth if missing\n if (!result.Authorization) {\n const token: string | null = getToken();\n Object.assign(result, getAuthorizationHeader(result, token));\n }\n\n method = getMethod(method, body);\n\n // if it’s a multipart FormData, let the browser set the boundary header\n if (body instanceof FormData) {\n return result;\n }\n\n // otherwise for POST/PUT/PATCH default to JSON\n if (['POST', 'PUT', 'PATCH'].includes(method) && !result['Content-Type']) {\n result['Content-Type'] = 'application/json';\n }\n return result;\n}\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 {getAuthorizationHeader} from './../imports'\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 let url: string= endpoint;\n\n\n // 3) prepare headers & body\n headers = {\n ...(body instanceof FormData ? {} : { \"Content-Type\": \"application/json\" }),\n ...getAuthorizationHeader(),\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","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\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","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","// shims/empty.js\n// Fake Node APIs for browser builds — every fn is a harmless noop.\n\nexport function statSync() {\n throw new Error(\"fs.statSync is not available in browser\");\n}\nexport function readdirSync() {\n return [];\n}\n\n// For async fs/promises\nexport async function stat() {\n throw new Error(\"fs.promises.stat is not available in browser\");\n}\nexport async function readdir() {\n return [];\n}\n\n// Export default empty object for wildcard imports\nexport default {};","// mediaTypes.ts\nimport * as fs from \"node:fs\";\nimport * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\n/** ---- Types ---- */\nexport type MimeByExt = Record<string, string>;\nexport type MediaMap = Record<string, MimeByExt>;\nexport type MediaCategory = keyof typeof MIME_TYPES;\n\nexport interface MediaOptions {\n /** Alias to mirror the Python **kwargs['media_types'] behavior */\n media_types?: Iterable<string> | string[] | null;\n}\n\n/** ---- Data: large but explicit, mirrors your Python mapping ---- */\nexport const MIME_TYPES = {\n image: {\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".gif\": \"image/gif\",\n \".bmp\": \"image/bmp\",\n \".tiff\": \"image/tiff\",\n \".webp\": \"image/webp\",\n \".svg\": \"image/svg+xml\",\n \".ico\": \"image/vnd.microsoft.icon\",\n \".heic\": \"image/heic\",\n \".psd\": \"image/vnd.adobe.photoshop\",\n \".raw\": \"image/x-raw\",\n },\n video: {\n \".mp4\": \"video/mp4\",\n \".webm\": \"video/webm\",\n \".ogg\": \"video/ogg\",\n \".mov\": \"video/quicktime\",\n \".avi\": \"video/x-msvideo\",\n \".mkv\": \"video/x-matroska\",\n \".flv\": \"video/x-flv\",\n \".wmv\": \"video/x-ms-wmv\",\n \".3gp\": \"video/3gpp\",\n \".ts\": \"video/mp2t\",\n \".mpeg\": \"video/mpeg\",\n \".mpg\": \"video/mpg\",\n },\n audio: {\n \".mp3\": \"audio/mpeg\",\n \".wav\": \"audio/wav\",\n \".flac\": \"audio/flac\",\n \".aac\": \"audio/aac\",\n \".ogg\": \"audio/ogg\",\n \".m4a\": \"audio/mp4\",\n \".opus\": \"audio/opus\",\n },\n document: {\n \".pdf\": \"application/pdf\",\n \".doc\": \"application/msword\",\n \".docx\":\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \".odt\": \"application/vnd.oasis.opendocument.text\",\n \".txt\": \"text/plain\",\n \".rtf\": \"application/rtf\",\n \".md\": \"text/markdown\",\n \".markdown\": \"text/markdown\",\n \".tex\": \"application/x-tex\",\n \".log\": \"text/plain\",\n \".json\": \"application/json\",\n \".xml\": \"application/xml\",\n \".yaml\": \"application/x-yaml\",\n \".yml\": \"application/x-yaml\",\n \".ini\": \"text/plain\",\n \".cfg\": \"text/plain\",\n \".toml\": \"application/toml\",\n \".csv\": \"text/csv\",\n \".tsv\": \"text/tab-separated-values\",\n },\n presentation: {\n \".ppt\": \"application/vnd.ms-powerpoint\",\n \".pptx\":\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \".odp\": \"application/vnd.oasis.opendocument.presentation\",\n },\n spreadsheet: {\n \".xls\": \"application/vnd.ms-excel\",\n \".xlsx\":\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \".ods\": \"application/vnd.oasis.opendocument.spreadsheet\",\n \".csv\": \"text/csv\",\n \".tsv\": \"text/tab-separated-values\",\n },\n code: {\n \".py\": \"text/x-python\",\n \".java\": \"text/x-java-source\",\n \".c\": \"text/x-c\",\n \".cpp\": \"text/x-c++\",\n \".h\": \"text/x-c\",\n \".hpp\": \"text/x-c++\",\n \".js\": \"application/javascript\",\n \".cjs\": \"application/javascript\",\n \".mjs\": \"application/javascript\",\n \".jsx\": \"application/javascript\",\n \".ts\": \"application/typescript\",\n \".tsx\": \"application/typescript\",\n \".rb\": \"text/x-ruby\",\n \".php\": \"application/x-php\",\n \".go\": \"text/x-go\",\n \".rs\": \"text/rust\",\n \".swift\": \"text/x-swift\",\n \".kt\": \"text/x-kotlin\",\n \".sh\": \"application/x-shellscript\",\n \".bash\": \"application/x-shellscript\",\n \".ps1\": \"application/x-powershell\",\n \".sql\": \"application/sql\",\n \".yml\": \"application/x-yaml\",\n \".coffee\": \"text/coffeescript\",\n \".lua\": \"text/x-lua\",\n },\n archive: {\n \".zip\": \"application/zip\",\n \".tar\": \"application/x-tar\",\n \".gz\": \"application/gzip\",\n \".tgz\": \"application/gzip\",\n \".bz2\": \"application/x-bzip2\",\n \".xz\": \"application/x-xz\",\n \".rar\": \"application/vnd.rar\",\n \".7z\": \"application/x-7z-compressed\",\n \".iso\": \"application/x-iso9660-image\",\n \".dmg\": \"application/x-apple-diskimage\",\n \".jar\": \"application/java-archive\",\n \".war\": \"application/java-archive\",\n \".whl\": \"application/python-wheel\",\n \".egg\": \"application/python-egg\",\n },\n font: {\n \".ttf\": \"font/ttf\",\n \".otf\": \"font/otf\",\n \".woff\": \"font/woff\",\n \".woff2\": \"font/woff2\",\n \".eot\": \"application/vnd.ms-fontobject\",\n },\n executable: {\n \".exe\": \"application/vnd.microsoft.portable-executable\",\n \".dll\": \"application/vnd.microsoft.portable-executable\",\n \".bin\": \"application/octet-stream\",\n \".deb\": \"application/vnd.debian.binary-package\",\n \".rpm\": \"application/x-rpm\",\n },\n} as const;\n\n/** Mirror of MEDIA_TYPES in Python: category -> Set of extensions */\nexport const MEDIA_TYPES: Record<MediaCategory, Set<string>> = Object.fromEntries(\n Object.entries(MIME_TYPES).map(([cat, mapping]) => [\n cat,\n new Set(Object.keys(mapping)),\n ])\n) as Record<MediaCategory, Set<string>>;\n\n/** ---- Helpers ---- */\nfunction toCategorySet(\n categories?: Iterable<string> | string[] | null,\n): Set<MediaCategory> {\n const allCats = new Set(Object.keys(MIME_TYPES)) as Set<string>;\n if (!categories) {\n // all categories\n return new Set(allCats) as Set<MediaCategory>;\n }\n const out = new Set<MediaCategory>();\n for (const c of categories as Iterable<string>) {\n const key = String(c) as MediaCategory;\n if (allCats.has(key)) out.add(key);\n }\n return out.size ? out : (new Set(allCats) as Set<MediaCategory>);\n}\n\nfunction normalizeCategories<T extends MediaOptions | undefined>(\n categories?: Iterable<string> | string[] | null,\n opts?: T,\n): Set<MediaCategory> {\n const selected = categories ?? opts?.media_types ?? null;\n return toCategorySet(selected);\n}\n\nfunction extOf(input: string): string {\n // Behaves like pathlib.Path(...).suffix.lower(): last extension only; lowercased.\n let ext = path.extname(input || \"\");\n if (!ext && input && input.startsWith(\".\")) {\n // user passed \".jpg\" directly\n ext = input;\n }\n return (ext || \"\").toLowerCase();\n}\n\nfunction unionExts(categories: Set<MediaCategory>): Set<string> {\n const out = new Set<string>();\n for (const c of categories) {\n const set = MEDIA_TYPES[c];\n for (const e of set) out.add(e);\n }\n return out;\n}\n\n/** ---- API (Python parity) ---- */\n\n/**\n * Return a sub-map of MEDIA_TYPES for the given categories.\n * If categories is falsy, returns all categories.\n */\nexport function getMediaMap(\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): Partial<Record<MediaCategory, Set<string>>> {\n const cats = normalizeCategories(categories, opts);\n const result: Partial<Record<MediaCategory, Set<string>>> = {};\n for (const c of cats) result[c] = new Set(MEDIA_TYPES[c]);\n return result;\n}\n\n/**\n * Return a flat, sorted list of all extensions for the given categories.\n */\nexport function getMediaExts(\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): string[] {\n const cats = normalizeCategories(categories, opts);\n return Array.from(unionExts(cats)).sort();\n}\n\n/**\n * Given a file path or extension, return its media category (e.g. \"image\") or null.\n * Mirrors Python's confirm_type.\n */\nexport function confirmType(\n pathOrExt: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): MediaCategory | null {\n const cats = normalizeCategories(categories, opts);\n const ext = extOf(pathOrExt);\n // Preserve object insertion order like Python dict iteration\n for (const [category, exts] of Object.entries(MEDIA_TYPES) as [\n MediaCategory,\n Set<string>,\n ][]) {\n if (!cats.has(category)) continue;\n if (ext && exts.has(ext)) return category;\n }\n return null;\n}\n\n/**\n * True if the given file path or extension belongs to one of the categories.\n */\nexport function isMediaType(\n pathOrExt: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): boolean {\n return confirmType(pathOrExt, categories, opts) !== null;\n}\n\n/**\n * Look up the MIME type by extension; fall back to 'application/octet-stream'.\n */\nexport function getMimeType(pathOrExt: string): string {\n const ext = extOf(pathOrExt);\n for (const mapping of Object.values(MIME_TYPES)) {\n if (ext && mapping[ext as keyof typeof mapping]) {\n return mapping[ext as keyof typeof mapping] as string;\n }\n }\n return \"application/octet-stream\";\n}\n\nexport function getAllFileTypesSync(\n directory: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): string[] {\n // 🧩 Skip entirely if fs isn't available\n if (!fs || !path) return [];\n\n try {\n const stat = fs.statSync(directory);\n if (!stat.isDirectory()) return [];\n\n const cats = normalizeCategories(categories, opts);\n const wanted = unionExts(cats);\n const results: string[] = [];\n\n function walkSync(dir: string) {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n for (const ent of entries) {\n const full = path.join(dir, ent.name);\n if (ent.isDirectory()) {\n walkSync(full);\n } else if (ent.isFile()) {\n const ext = path.extname(ent.name).toLowerCase();\n if (wanted.has(ext)) results.push(full);\n }\n }\n }\n\n walkSync(directory);\n return results;\n } catch {\n return [];\n }\n}\n\nexport async function getAllFileTypes(\n directory: string,\n categories?: Iterable<string> | string[] | null,\n opts?: MediaOptions,\n): Promise<string[]> {\n // 🧩 Skip entirely if fsp isn't available\n if (!fsp || !path) return [];\n\n try {\n const stat = await fsp.stat(directory);\n if (!stat.isDirectory()) return [];\n\n const cats = normalizeCategories(categories, opts);\n const wanted = unionExts(cats);\n const results: string[] = [];\n\n async function walkAsync(dir: string): Promise<void> {\n const entries = await fsp.readdir(dir, { withFileTypes: true });\n for (const ent of entries) {\n const full = path.join(dir, ent.name);\n if (ent.isDirectory()) {\n await walkAsync(full);\n } else if (ent.isFile()) {\n const ext = path.extname(ent.name).toLowerCase();\n if (wanted.has(ext)) results.push(full);\n }\n }\n }\n\n await walkAsync(directory);\n return results;\n } catch {\n return [];\n }\n}\n\n\n/** Optional convenience re-exports that mirror your Python names */\nexport const get_all_file_types = getAllFileTypes;\nexport const get_media_map = getMediaMap;\nexport const get_media_exts = getMediaExts;\nexport const confirm_type = confirmType;\nexport const is_media_type = isMediaType;\nexport const get_mime_type = getMimeType;\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\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 let objs = string.replace('-', '_').split('_');\n for (const obj of objs) {\n let 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 let 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/** \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\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","export function Button({\n children,\n color = 'gray',\n variant = 'default',\n className = '',\n ...rest\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & {\n color?: 'gray' | 'green' | 'blue';\n variant?: 'default' | 'icon' | 'primary' | 'secondary';\n className?: string;\n}) {\n const base = 'rounded px-3 py-1 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 transition-colors duration-150';\n const variantStyles = {\n default: '',\n icon: 'p-1 bg-transparent hover:bg-gray-100',\n primary: 'text-white',\n secondary: '',\n };\n const palette = {\n gray:\n variant === 'primary'\n ? 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500'\n : 'bg-gray-200 hover:bg-gray-300 focus:ring-gray-400',\n green: 'bg-green-600 text-white hover:bg-green-700 focus:ring-green-500',\n blue:\n variant === 'primary'\n ? 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500'\n : 'bg-blue-200 hover:bg-blue-300 focus:ring-blue-400',\n };\n\n return (\n <button\n className={`${base} ${variantStyles[variant]} ${palette[color]} ${className}`}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import React from 'react';\nexport function Checkbox({\n label,\n ...rest\n}: React.InputHTMLAttributes<HTMLInputElement> & { label: string }) {\n return (\n <label className='flex items-center gap-2 mb-4'>\n <input type='checkbox' {...rest} />\n <span>{label}</span>\n </label>\n );\n}\n","import React from 'react';\nexport function Input({\n label,\n trailing,\n ...rest\n}: React.InputHTMLAttributes<HTMLInputElement> & {\n label: string;\n trailing?: React.ReactNode;\n}) {\n return (\n <label className='mb-4 block'>\n <span className='block text-sm font-medium mb-1'>{label}</span>\n <div className='flex gap-2'>\n <input\n className='flex-1 rounded border px-2 py-1 disabled:bg-gray-100'\n {...rest}\n />\n {trailing}\n </div>\n </label>\n );\n}\n\n\n","export function Spinner() {\n return (<p className='animate-pulse'>Loading…</p>);\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}"],"names":["path","path.extname","fs","fs.statSync","fs.readdirSync","path.join","stat","fsp.stat","fsp.readdir","path.dirname","path.basename","path.relative","path.sep","_jsx","_jsxs"],"mappings":"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","x_google_ignoreList":[7,11]}