@putkoff/abstract-utilities 1.0.98 → 1.0.102

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.
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ const Input = ({ label, type, value, onValueChange, placeholder, disabled, error, directory, multiple, accept, }) => (jsxRuntime.jsxs("label", { className: "block", children: [jsxRuntime.jsx("span", { className: "text-sm", children: label }), jsxRuntime.jsx("input", { type: type, className: `mt-1 w-full border rounded px-2 py-1 ${error ? "border-red-500" : ""}`, value: value, onChange: (e) => onValueChange(e.target.value), placeholder: placeholder, disabled: disabled, ...(type === "file" && directory ? { webkitdirectory: "true", directory: "" } : {}), ...(type === "file" && multiple ? { multiple: true } : {}), ...(type === "file" && accept ? { accept } : {}) }), error && jsxRuntime.jsx("p", { className: "text-sm text-red-600", children: error })] }));
6
+
7
+ let _cachedConfig = null;
8
+ async function loadConfig() {
9
+ if (_cachedConfig)
10
+ return _cachedConfig;
11
+ try {
12
+ // Use a dynamic expression so bundlers don’t resolve at build time
13
+ const mod = await (new Function("return import('./config.json').catch(() => ({}))"))();
14
+ _cachedConfig = mod.default ?? {};
15
+ return _cachedConfig;
16
+ }
17
+ catch {
18
+ _cachedConfig = {};
19
+ return _cachedConfig;
20
+ }
21
+ }
22
+
23
+ exports.Input = Input;
24
+ exports.loadConfig = loadConfig;
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils/src/Input.tsx","../../src/utils/src/config.ts"],"sourcesContent":["\nexport interface InputProps {\n label?: any;\n type?: any;\n value?: any;\n onValueChange?: any;\n disabled?: any;\n placeholder?: any;\n error?: string;\n \n}\n\nexport interface FileInputExtra {\n directory?: boolean; // true → allow folder selection\n multiple?: boolean; // true → allow multiple files\n accept?: string; // optional MIME filter\n}\n/** keep other InputProps fields … */\nexport type EnhancedInputProps = InputProps & FileInputExtra;\nexport const Input: React.FC<EnhancedInputProps> = ({\n label,\n type,\n value,\n onValueChange,\n placeholder,\n disabled,\n error,\n directory,\n multiple,\n accept,\n}) => (\n <label className=\"block\">\n <span className=\"text-sm\">{label}</span>\n <input\n type={type}\n className={`mt-1 w-full border rounded px-2 py-1 ${error ? \"border-red-500\" : \"\"}`}\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n \n {...(type === \"file\" && directory ? { webkitdirectory: \"true\", directory: \"\" } : {})}\n {...(type === \"file\" && multiple ? { multiple: true } : {})}\n {...(type === \"file\" && accept ? { accept } : {})}\n />\n {error && <p className=\"text-sm text-red-600\">{error}</p>}\n </label>\n);","let _cachedConfig: any = null;\n\nexport async function loadConfig(): Promise<any> {\n if (_cachedConfig) return _cachedConfig;\n\n try {\n // Use a dynamic expression so bundlers don’t resolve at build time\n const mod: any = await (new Function(\n \"return import('./config.json').catch(() => ({}))\"\n ))();\n _cachedConfig = mod.default ?? {};\n return _cachedConfig;\n } catch {\n _cachedConfig = {};\n return _cachedConfig;\n }\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;;AAmBO,MAAM,KAAK,GAAiC,CAAC,EAClD,KAAK,EACL,IAAI,EACJ,KAAK,EACL,aAAa,EACb,WAAW,EACX,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,MAAM,GACP,MACCA,eAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,OAAO,aACtBC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,EACxCA,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,CAAA,qCAAA,EAAwC,KAAK,GAAG,gBAAgB,GAAG,EAAE,CAAA,CAAE,EAClF,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,MAEb,IAAI,KAAK,MAAM,IAAI,SAAS,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAA,IAC/E,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAA,IACxD,IAAI,KAAK,MAAM,IAAI,MAAM,GAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAA,CACrD,EACD,KAAK,IAAIA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAE,KAAK,EAAA,CAAK,CAAA,EAAA,CACnD;;AC9CV,IAAI,aAAa,GAAQ,IAAI;AAEtB,eAAe,UAAU,GAAA;AAC9B,IAAA,IAAI,aAAa;AAAE,QAAA,OAAO,aAAa;AAEvC,IAAA,IAAI;;QAEF,MAAM,GAAG,GAAQ,MAAM,CAAC,IAAI,QAAQ,CAClC,kDAAkD,CACnD,GAAG;AACJ,QAAA,aAAa,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE;AACjC,QAAA,OAAO,aAAa;IACtB;AAAE,IAAA,MAAM;QACN,aAAa,GAAG,EAAE;AAClB,QAAA,OAAO,aAAa;IACtB;AACF;;;;;"}
@@ -0,0 +1,126 @@
1
+ import { r as callStorage, i as isTokenExpired, d as decodeJwt } from './safe_storage-CMuv35Vo.js';
2
+ import 'path';
3
+ import 'node:fs';
4
+ import 'node:path';
5
+ import 'util';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+ import 'node:fs/promises';
8
+ import 'fs';
9
+ import 'os';
10
+ import 'stream';
11
+ import 'buffer';
12
+ import 'events';
13
+ import 'zlib';
14
+ import 'tty';
15
+ import 'string_decoder';
16
+ import 'http';
17
+ import 'https';
18
+
19
+ /** Read raw JWT from LocalStorage (or null if absent) */
20
+ function getToken() {
21
+ return callStorage('getItem', 'token');
22
+ }
23
+ function isLoggedIn() {
24
+ const tok = getToken();
25
+ return !!tok && !isTokenExpired(tok ?? "");
26
+ }
27
+ /**
28
+ * Add a Bearer Authorization header.
29
+ * A shallow copy of headers is returned so callers can keep chaining.
30
+ */
31
+ function getAuthorizationHeader(headers = {}, token = null) {
32
+ token = token ?? getToken();
33
+ headers = headers || {};
34
+ if (token)
35
+ headers["Authorization"] = `Bearer ${token}`;
36
+ return { ...headers };
37
+ }
38
+ /** Throw + redirect if there’s no valid token; otherwise return it. */
39
+ function requireToken() {
40
+ const tok = getToken();
41
+ if (!tok || isTokenExpired(tok)) {
42
+ console.warn("→ No token or expired token, redirecting to login…");
43
+ localStorage.removeItem("token");
44
+ window.location.href = '/';
45
+ throw new Error("Redirecting to login…");
46
+ }
47
+ return tok;
48
+ }
49
+ /** Convenience wrapper: return username from the JWT (or null). */
50
+ function currentUsername() {
51
+ const tok = getToken();
52
+ if (!tok)
53
+ return null;
54
+ try {
55
+ const { username } = decodeJwt(tok);
56
+ return username ?? null;
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ }
62
+ function currentUsernames() {
63
+ const tok = getToken();
64
+ if (!tok)
65
+ return null;
66
+ try {
67
+ const parts = tok.split(".");
68
+ if (parts.length !== 3)
69
+ return null;
70
+ let b64 = parts[1].replace(/-/g, "+").replace(/_/g, "/");
71
+ b64 = b64.padEnd(Math.ceil(b64.length / 4) * 4, "=");
72
+ const jsonText = atob(b64);
73
+ const payload = JSON.parse(jsonText);
74
+ return payload.username ?? null;
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ /** Remove the JWT from LocalStorage */
81
+ function removeToken() {
82
+ try {
83
+ callStorage('removeItem', 'token');
84
+ }
85
+ catch (err) {
86
+ console.warn("Failed to remove token:", err);
87
+ }
88
+ }
89
+
90
+ // src/client/ui_utils/src/button.tsx
91
+ function Button({ children, color = 'gray', variant = 'default', className = '', ...rest }) {
92
+ 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';
93
+ const variantStyles = {
94
+ default: '',
95
+ icon: 'p-1 bg-transparent hover:bg-gray-100',
96
+ primary: 'text-white',
97
+ secondary: '',
98
+ };
99
+ const palette = {
100
+ gray: variant === 'primary'
101
+ ? 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500'
102
+ : 'bg-gray-200 hover:bg-gray-300 focus:ring-gray-400',
103
+ green: 'bg-green-600 text-white hover:bg-green-700 focus:ring-green-500',
104
+ blue: variant === 'primary'
105
+ ? 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500'
106
+ : 'bg-blue-200 hover:bg-blue-300 focus:ring-blue-400',
107
+ };
108
+ return (jsx("button", { className: `${base} ${variantStyles[variant]} ${palette[color]} ${className}`, ...rest, children: children }));
109
+ }
110
+
111
+ // src/client/ui_utils/src/checkbox.tsx
112
+ function Checkbox({ label, ...rest }) {
113
+ return (jsxs("label", { className: 'flex items-center gap-2 mb-4', children: [jsx("input", { type: 'checkbox', ...rest }), jsx("span", { children: label })] }));
114
+ }
115
+
116
+ // src/client/ui_utils/src/input.tsx
117
+ function Input({ label, trailing, ...rest }) {
118
+ return (jsxs("label", { className: 'mb-4 block', children: [jsx("span", { className: 'block text-sm font-medium mb-1', children: label }), jsxs("div", { className: 'flex gap-2', children: [jsx("input", { className: 'flex-1 rounded border px-2 py-1 disabled:bg-gray-100', ...rest }), trailing] })] }));
119
+ }
120
+
121
+ function Spinner() {
122
+ return (jsx("p", { className: 'animate-pulse', children: "Loading\u2026" }));
123
+ }
124
+
125
+ export { Button, Checkbox, Input, Spinner, currentUsername, currentUsernames, getAuthorizationHeader, getToken, isLoggedIn, removeToken, requireToken };
126
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sources":["../../src/client/auth/src/token_client.ts","../../src/client/ui_utils/src/button.tsx","../../src/client/ui_utils/src/checkbox.tsx","../../src/client/ui_utils/src/input.tsx","../../src/client/ui_utils/src/spinner.tsx"],"sourcesContent":["'use client';\nimport {\n isTokenExpired,\n decodeJwt,\n callStorage,\n} from '../../../functions';\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\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}","// src/client/ui_utils/src/button.tsx\n'use client';\nimport React from 'react';\n\nexport 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","// src/client/ui_utils/src/checkbox.tsx\n'use client';\nimport 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","// src/client/ui_utils/src/input.tsx\n'use client';\nimport 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","'use client';\nexport function Spinner() {\n return (<p className='animate-pulse'>Loading…</p>);\n}\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export { a as MEDIA_TYPES, M as MIME_TYPES, r as callStorage, c as confirmType, n as confirm_type, d as decodeJwt, j as getAllFileTypes, h as getAllFileTypesSync, b as getMediaExts, g as getMediaMap, f as getMimeType, q as getSafeLocalStorage, k as get_all_file_types, m as get_media_exts, l as get_media_map, p as get_mime_type, e as isMediaType, i as isTokenExpired, o as is_media_type, t as safeGlobalProp, s as safeStorage } from './safe_storage-CMuv35Vo.js';
2
+ export { A as API_PREFIX, bf as ATTOSECOND, B as BASE_URL, bl as CENTISECOND, bp as DAY, bF as DAY_IN_S, bm as DECISECOND, b as DEV_PREFIX, aO as DIST_ALIASES, aQ as DIST_FACTORS, D as DOMAIN_NAME, b1 as DistanceConverter, bC as FEET_PER_METER, bg as FEMTOSECOND, bo as HOUR, bE as HOUR_IN_S, bA as KMS_PER_METER, bz as METERS_PER_FOOT, bx as METERS_PER_KM, by as METERS_PER_MILE, bj as MICROSECOND, bB as MILES_PER_METER, bk as MILISECOND, bn as MINUTE, bD as MIN_IN_S, br as MONTH, bH as MONTH_IN_S, bJ as MPerS_TO_MiPerH, bI as MiPerH_TO_MPerS, bi as NANOSECOND, bv as PI, bw as PI2, bh as PICOSECOND, a as PROD_PREFIX, P as PROTOCOL, bd as SECOND, bu as SECONDS_PER_DAY, bt as SECONDS_PER_HOUR, bs as SECONDS_PER_MINUTE, S as SUB_DIR, b3 as SpeedConverter, aP as TIME_ALIASES, aR as TIME_FACTORS, b2 as TimeConverter, bq as YEAR, bG as YEAR_IN_S, be as ZEPTOSECOND, ap as alertit, cb as assureArray, bU as assureList, bZ as assureNumber, c3 as assureString, ca as assure_array, bV as assure_list, c0 as assure_number, c5 as assure_string, c6 as assurearray, bX as assurelist, b$ as assurenumber, c4 as assurestring, cB as callWindowMethod, aS as canonDist, aT as canonTime, au as capitalize, at as capitalize_str, q as checkResponse, bN as cleanArray, bM as cleanText, bL as convertBigInts, a_ as convertDistance, b0 as convertSpeed, a$ as convertTime, aC as create_list_string, cK as dataSize, cI as dataSizeInMb, cL as debugPrint, aU as distanceToMeters, az as eatAll, aA as eatElse, ax as eatInner, ay as eatOuter, aD as eatall, aE as eatinner, aF as eatouter, cr as emptyObjectToNull, aG as ends_in_quotes, c9 as ensureArray, bW as ensureList, b_ as ensureNumber, c2 as ensureString, c8 as ensure_array, bQ as ensure_list, bR as ensure_number, bS as ensure_string, c7 as ensurearray, bT as ensurelist, bY as ensurenumber, c1 as ensurestring, cG as exceedsMbLimit, aM as exponential, cg as extractInsertData, i as fetchIndexHtml, j as fetchIndexHtmlContainer, f as fetchIt, ce as findKeyValue, bc as fmt, bP as formatNumber, b5 as fromMeters, ba as fromMps, b7 as fromSeconds, a2 as geAuthsUtilsDirectory, a3 as geBackupsUtilsDirectory, a4 as geConstantsUtilsDirectory, a5 as geEnvUtilsDirectory, a6 as geFetchUtilsDirectory, a7 as geFileUtilsDirectory, a8 as gePathUtilsDirectory, ac as geStaticDirectory, a9 as geStringUtilsDirectory, aa as geTypeUtilsDirectory, cd as get, $ as getAbsDir, a0 as getAbsPath, cl as getAlphaNum, co as getAlphas, ah as getBaseDir, Y as getBasename, n as getBody, ck as getChar, bO as getCleanArray, ag as getComponentsUtilsDirectory, ct as getConfig, cx as getConfigContent, am as getDbConfigsPath, _ as getDirname, aj as getDistDir, cz as getDocumentProp, ak as getEnvDir, al as getEnvPath, U as getExtname, o as getFetchVars, W as getFilename, a1 as getFunctionsDir, af as getFunctionsUtilsDirectory, m as getHeaders, ae as getHooksUtilsDirectory, h as getHtmlDirectory, cp as getIfNone, cJ as getJsonSizeInMb, cM as getLastCaller, ad as getLibUtilsDirectory, l as getMethod, cm as getNums, ai as getPublicDir, k as getResult, cy as getSafeDocument, cA as getSafeWindow, ao as getSchemasDirPath, an as getSchemasPath, Q as getSplitext, ab as getSrcDir, aq as getSubstring, cD as getWindowHost, cC as getWindowProp, y as get_basename, x as get_dirname, C as get_extname, z as get_filename, s as get_full_path, r as get_full_url, cc as get_key_value, cF as get_keyword_string, F as get_relative_path, E as get_splitext, g as get_window, c as get_window_location, e as get_window_parts, d as get_window_pathname, X as getbasename, Z as getdirname, T as getextname, V as getfilename, R as getsplitext, bb as isFiniteNum, cn as isNum, cj as isStrInString, bK as isTimeInterval, ci as isType, aN as isZero, cs as loadConfig, ch as loadInnerJson, N as makePath, G as make_path, I as make_sanitized_path, M as makepath, cq as mergeNotNullValues, aV as metersToDistance, aZ as mpsToSpeed, J as normalizeUrl, cf as omitKeys, p as parseResult, L as pathJoin, O as path_join, t as path_to_url, K as pathjoin, cE as processKeywords, cw as readJsonFile, cu as readJsonFileBrowser, cv as readJsonFileNode, aL as roundPercentage, aJ as safeDivide, cH as safeJsonSizeInMb, aK as safeMultiply, aI as safeNums, H as sanitizeFilename, ar as sanitizeString, aX as secondsToTime, aY as speedToMps, av as stripPrefixes, aH as stripQuotes, aW as timeToSeconds, b4 as toMeters, b6 as toSeconds, as as truncateString, aw as tryEatPrefix, aB as tryParse, u as urlJoin, v as url_to_path, w as urljoin, b9 as velocityFromMs, b8 as velocityToMs } from './print_utils-qqcMhSul.js';
3
+ export { inspect } from 'util';
4
+ import 'node:fs';
5
+ import 'node:fs/promises';
6
+ import 'node:path';
7
+ import 'fs';
8
+ import 'path';
9
+ import 'os';
10
+ import 'stream';
11
+ import 'buffer';
12
+ import 'events';
13
+ import 'zlib';
14
+ import 'tty';
15
+ import 'string_decoder';
16
+ import 'http';
17
+ import 'https';
18
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}