@cybearl/cypack 1.10.7 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -94
- package/backend.d.ts +21 -13
- package/backend.js +5 -5
- package/backend.js.map +1 -1
- package/frontend.d.ts +20 -1
- package/frontend.js +1 -1
- package/frontend.js.map +1 -1
- package/index.d.ts +124 -7
- package/index.js +6 -3
- package/index.js.map +1 -1
- package/package.json +28 -26
package/frontend.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* The type for the CGAS status string, it can either be:
|
|
3
5
|
* - `enabled`: The application is enabled and available to the public.
|
|
@@ -87,6 +89,23 @@ declare function getCGASStatus(markerOnly?: false, baseUrl?: string): Promise<Re
|
|
|
87
89
|
*/
|
|
88
90
|
declare const fallbackCGASStatus: CGASStatus;
|
|
89
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Merges Tailwind CSS class names without style conflicts.
|
|
94
|
+
* @param inputs The Tailwind CSS classes to merge.
|
|
95
|
+
* @returns The merged class string.
|
|
96
|
+
*/
|
|
97
|
+
declare function cn(...inputs: ClassValue[]): string;
|
|
98
|
+
/**
|
|
99
|
+
* The type for a CSS delay value, either a number (milliseconds) or a CSS string ("1s", "500ms").
|
|
100
|
+
*/
|
|
101
|
+
type CSSDelay = `${number}s` | `${number}ms` | number;
|
|
102
|
+
/**
|
|
103
|
+
* Converts a CSS delay string to milliseconds.
|
|
104
|
+
* @param delay A CSS delay string ("1s", "500ms") or a number already in milliseconds.
|
|
105
|
+
* @returns The delay in milliseconds, or 0 if the format is unrecognized.
|
|
106
|
+
*/
|
|
107
|
+
declare function convertCssDelayToMs(delay: CSSDelay): number;
|
|
108
|
+
|
|
90
109
|
/**
|
|
91
110
|
* Allows to add query parameters to a URL.
|
|
92
111
|
* @param baseUrl The base URL to add parameters to.
|
|
@@ -101,4 +120,4 @@ declare function addParamsToUrl(baseUrl: string, params: {
|
|
|
101
120
|
*/
|
|
102
121
|
declare const currentUrlOrigin: string | null;
|
|
103
122
|
|
|
104
|
-
export { addParamsToUrl, currentUrlOrigin, fallbackCGASStatus, getCGASStatus };
|
|
123
|
+
export { type CSSDelay, addParamsToUrl, cn, convertCssDelayToMs, currentUrlOrigin, fallbackCGASStatus, getCGASStatus };
|
package/frontend.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
async function a(
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';async function a(t=false,e="/api/cgas"){return await(await fetch(`${e}/status?markerOnly=${t}`)).json()}var o={status:"disabled",marker:"fallback-marker",timestamp:new Date().toISOString(),version:{raw:"unavailable",formatted:"unavailable"},message:"This API is not available, please try again later."};function l(...t){return twMerge(clsx(t))}function m(t){if(typeof t=="number")return t;let e=t.match(/(\d+(\.\d+)?)(s|ms)/);if(!e)return 0;let r=Number.parseFloat(e[1]);return e[3]==="s"?r*1e3:r}function c(t,e){let r=t;for(let[s,n]of Object.entries(e))n==null||n===""||n==="null"||n==="undefined"||(r+=`${r.includes("?")?"&":"?"}${encodeURIComponent(s)}=${encodeURIComponent(n.toString())}`);return r}var p=typeof window<"u"&&window.location.origin?window.location.origin:null;export{c as addParamsToUrl,l as cn,m as convertCssDelayToMs,p as currentUrlOrigin,o as fallbackCGASStatus,a as getCGASStatus};//# sourceMappingURL=frontend.js.map
|
|
2
2
|
//# sourceMappingURL=frontend.js.map
|
package/frontend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/frontend/cgas/status.ts","../src/frontend/urls.ts"],"names":["getCGASStatus","markerOnly","baseUrl","fallbackCGASStatus","addParamsToUrl","params","url","key","
|
|
1
|
+
{"version":3,"sources":["../src/frontend/cgas/status.ts","../src/frontend/styling.ts","../src/frontend/urls.ts"],"names":["getCGASStatus","markerOnly","baseUrl","fallbackCGASStatus","cn","inputs","twMerge","clsx","convertCssDelayToMs","delay","match","value","addParamsToUrl","params","url","key","currentUrlOrigin"],"mappings":"6DAWA,eAAsBA,EAClBC,CAAAA,CAAa,KAAA,CACbC,CAAAA,CAAU,WAAA,CACiC,CAG3C,OADe,KAAA,CADE,MAAM,KAAA,CAAM,GAAGA,CAAO,CAAA,mBAAA,EAAsBD,CAAU,CAAA,CAAE,GAC3C,IAAA,EAElC,CAKO,IAAME,EAAiC,CAC1C,MAAA,CAAQ,UAAA,CACR,MAAA,CAAQ,kBACR,SAAA,CAAW,IAAI,IAAA,EAAK,CAAE,aAAY,CAClC,OAAA,CAAS,CACL,GAAA,CAAK,cACL,SAAA,CAAW,aACf,CAAA,CACA,OAAA,CAAS,oDACb,ECxBO,SAASC,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CACxC,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC/B,CAYO,SAASG,CAAAA,CAAoBC,CAAAA,CAAyB,CACzD,GAAI,OAAOA,CAAAA,EAAU,QAAA,CAAU,OAAOA,EAEtC,IAAMC,CAAAA,CAAQD,CAAAA,CAAM,KAAA,CAAM,qBAAqB,CAAA,CAC/C,GAAI,CAACC,CAAAA,CAAO,OAAO,CAAA,CAEnB,IAAMC,CAAAA,CAAQ,MAAA,CAAO,WAAWD,CAAAA,CAAM,CAAC,CAAC,CAAA,CAGxC,OAFaA,CAAAA,CAAM,CAAC,CAAA,GAEJ,GAAA,CAAMC,EAAQ,GAAA,CAAOA,CACzC,CC1BO,SAASC,EACZV,CAAAA,CACAW,CAAAA,CAGF,CACE,IAAIC,EAAMZ,CAAAA,CAEV,IAAA,GAAW,CAACa,CAAAA,CAAKJ,CAAK,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQE,CAAM,EACjBF,CAAAA,EAAU,IAAA,EAAQA,CAAAA,GAAU,EAAA,EAAMA,IAAU,MAAA,EAAUA,CAAAA,GAAU,WAAA,GAI3FG,CAAAA,EAAO,GAAGA,CAAAA,CAAI,QAAA,CAAS,GAAG,CAAA,CAAI,IAAM,GAAG,CAAA,EAAG,kBAAA,CAAmBC,CAAG,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAmBJ,CAAAA,CAAM,QAAA,EAAU,CAAC,CAAA,CAAA,CAAA,CAG7G,OAAOG,CACX,CAMO,IAAME,CAAAA,CAAmB,OAAO,MAAA,CAAW,KAAe,MAAA,CAAO,QAAA,CAAS,MAAA,CAAS,MAAA,CAAO,SAAS,MAAA,CAAS","file":"frontend.js","sourcesContent":["import type { CGASStatus } from \"@/main/types/cgas\"\nimport type { RequestResult } from \"@/main/types/requests\"\n\n/**\n * Get the status of the application via the CGAS API endpoint (that itself uses the `getCGASStatus` function).\n * @param markerOnly Whether to only return the marker (optional, defaults to false).\n * @param baseUrl The base URL of the CGAS API (optional, defaults to \"/api/cgas\").\n * @returns The status of the application, or the marker if `markerOnly` is true.\n */\nexport async function getCGASStatus(markerOnly: true, baseUrl?: string): Promise<RequestResult<string>>\nexport async function getCGASStatus(markerOnly?: false, baseUrl?: string): Promise<RequestResult<CGASStatus>>\nexport async function getCGASStatus(\n markerOnly = false,\n baseUrl = \"/api/cgas\",\n): Promise<RequestResult<CGASStatus | string>> {\n const response = await fetch(`${baseUrl}/status?markerOnly=${markerOnly}`)\n const result = await response.json()\n return result as RequestResult<CGASStatus | string>\n}\n\n/**\n * The fallback CGAS status, used when the CGAS API is not available.\n */\nexport const fallbackCGASStatus: CGASStatus = {\n status: \"disabled\",\n marker: \"fallback-marker\",\n timestamp: new Date().toISOString(),\n version: {\n raw: \"unavailable\",\n formatted: \"unavailable\",\n },\n message: \"This API is not available, please try again later.\",\n}\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\n/**\n * Merges Tailwind CSS class names without style conflicts.\n * @param inputs The Tailwind CSS classes to merge.\n * @returns The merged class string.\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n/**\n * The type for a CSS delay value, either a number (milliseconds) or a CSS string (\"1s\", \"500ms\").\n */\nexport type CSSDelay = `${number}s` | `${number}ms` | number\n\n/**\n * Converts a CSS delay string to milliseconds.\n * @param delay A CSS delay string (\"1s\", \"500ms\") or a number already in milliseconds.\n * @returns The delay in milliseconds, or 0 if the format is unrecognized.\n */\nexport function convertCssDelayToMs(delay: CSSDelay): number {\n if (typeof delay === \"number\") return delay\n\n const match = delay.match(/(\\d+(\\.\\d+)?)(s|ms)/)\n if (!match) return 0\n\n const value = Number.parseFloat(match[1])\n const unit = match[3]\n\n return unit === \"s\" ? value * 1000 : value\n}\n","/**\n * Allows to add query parameters to a URL.\n * @param baseUrl The base URL to add parameters to.\n * @param params The parameters to add, note that each parameter will be URL-encoded.\n * @returns The URL with the parameters added.\n */\nexport function addParamsToUrl(\n baseUrl: string,\n params: {\n [key: string]: string | number | boolean | undefined | null\n },\n) {\n let url = baseUrl\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null || value === \"\" || value === \"null\" || value === \"undefined\") {\n continue\n }\n\n url += `${url.includes(\"?\") ? \"&\" : \"?\"}${encodeURIComponent(key)}=${encodeURIComponent(value.toString())}`\n }\n\n return url\n}\n\n/**\n * Get the current URL origin or null if it's not available.\n */\n// biome-ignore lint/complexity/useOptionalChain: Frontend code, optional chaining would cause issues with window being undefined\nexport const currentUrlOrigin = typeof window !== \"undefined\" && window.location.origin ? window.location.origin : null\n"]}
|
package/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns true if the code is running in a client environment.
|
|
3
|
-
*/
|
|
4
|
-
declare function isClient(): boolean;
|
|
5
1
|
/**
|
|
6
2
|
* Returns true if the code is running in a server environment.
|
|
7
3
|
*/
|
|
8
4
|
declare function isServer(): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Returns true if the code is running in a client environment.
|
|
7
|
+
*/
|
|
8
|
+
declare function isClient(): boolean;
|
|
9
9
|
/**
|
|
10
10
|
* Compares two arrays for equality.
|
|
11
11
|
* @param array1 The first array to compare.
|
|
@@ -14,6 +14,29 @@ declare function isServer(): boolean;
|
|
|
14
14
|
*/
|
|
15
15
|
declare function arrayEqual(array1: Array<any>, array2: Array<any>): boolean;
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* The shape of the required environment variables config, split by visibility scope.
|
|
19
|
+
*/
|
|
20
|
+
type RequiredEnvVars = {
|
|
21
|
+
/** Variable names that must be present in both server and client environments. */
|
|
22
|
+
public: string[];
|
|
23
|
+
/** Variable names that must be present on the server but must NOT be exposed to the client. */
|
|
24
|
+
private: string[];
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Checks for required environment variables and warns or throws if any are missing
|
|
28
|
+
* or if private variables are leaking into the client bundle.
|
|
29
|
+
*
|
|
30
|
+
* Pass your app's required-var names as `requiredVars` and a flat record of their
|
|
31
|
+
* actual runtime values as `runtimeValues`. The `runtimeValues` object must inline
|
|
32
|
+
* `process.env.X` calls directly, dynamic key access (`process.env[name]`) is
|
|
33
|
+
* dead-code eliminated by most bundlers and will not work.
|
|
34
|
+
*
|
|
35
|
+
* @param requiredVars The required variable names split into `public` and `private`.
|
|
36
|
+
* @param runtimeValues A flat map of variable name → `process.env.X` value.
|
|
37
|
+
*/
|
|
38
|
+
declare function checkEnvironmentVariables(requiredVars: RequiredEnvVars, runtimeValues: Record<string, string | undefined>): void;
|
|
39
|
+
|
|
17
40
|
/**
|
|
18
41
|
* A set of general constants.
|
|
19
42
|
*/
|
|
@@ -568,6 +591,36 @@ declare function parseQueryStringArray(query: string | Array<string>): string[];
|
|
|
568
591
|
* @returns The slugified version of the name.
|
|
569
592
|
*/
|
|
570
593
|
declare function slugifyName(name: string, previousSlug?: string): string;
|
|
594
|
+
/**
|
|
595
|
+
* Formats a date as a human-readable relative time string.
|
|
596
|
+
* Falls back to a locale date string for dates older than 24 hours.
|
|
597
|
+
* @param date The date to format.
|
|
598
|
+
* @returns A string like "just now", "5m ago", "3h ago", or a locale date string.
|
|
599
|
+
*/
|
|
600
|
+
declare function formatRelativeTime(date: Date): string;
|
|
601
|
+
/**
|
|
602
|
+
* Formats a date into a locale-aware datetime string using the runtime's default locale.
|
|
603
|
+
* @param date The date to format.
|
|
604
|
+
* @returns The formatted date string (e.g., "04/25/2026, 03:45:00 PM").
|
|
605
|
+
*/
|
|
606
|
+
declare function formatDate(date: Date): string;
|
|
607
|
+
/**
|
|
608
|
+
* Formats a bigint as scientific notation using only integer arithmetic,
|
|
609
|
+
* supporting arbitrarily large values (e.g., up to 2^256).
|
|
610
|
+
*
|
|
611
|
+
* Returns a tuple `[coefficient, exponent]` so callers can render the
|
|
612
|
+
* exponent as a superscript (e.g., `["4.61", 18]` for ~4.61 × 10^18).
|
|
613
|
+
* @param value The bigint to format.
|
|
614
|
+
* @param precision Number of decimal digits in the coefficient (default 2).
|
|
615
|
+
*/
|
|
616
|
+
declare function bigintToScientific(value: bigint, precision?: number): [coefficient: string, exponent: number];
|
|
617
|
+
/**
|
|
618
|
+
* Converts a bigint to an en-US formatted string with metric prefixes (e.g., 1500 -> "1.5k").
|
|
619
|
+
* Supports values up to exa (E).
|
|
620
|
+
* @param value The bigint to format.
|
|
621
|
+
* @returns The formatted string with metric prefix.
|
|
622
|
+
*/
|
|
623
|
+
declare function bigintToMetricFormatted(value: bigint): string;
|
|
571
624
|
/**
|
|
572
625
|
* Formats a number of bytes into a human-readable string with appropriate units.
|
|
573
626
|
* @param bytes The number of bytes.
|
|
@@ -583,13 +636,64 @@ declare function formatBytes(bytes: number, decimalPlaces?: number): string;
|
|
|
583
636
|
*/
|
|
584
637
|
declare function formatJson(str: string): string;
|
|
585
638
|
/**
|
|
586
|
-
* Stringify a JSON object with support for BigInt and functions.
|
|
639
|
+
* Stringify a JSON object with support for `BigInt` and functions.
|
|
587
640
|
* @param object The object to stringify.
|
|
588
|
-
* @param indent The number of spaces to indent (optional, defaults to 4)
|
|
641
|
+
* @param indent The number of spaces to indent (optional, defaults to 4).
|
|
589
642
|
* @returns The stringified JSON object.
|
|
590
643
|
*/
|
|
591
644
|
declare function stringify(object: unknown, indent?: number): string;
|
|
592
645
|
|
|
646
|
+
/**
|
|
647
|
+
* A set of colored Next.js-compatible ANSI indicators for console log messages.
|
|
648
|
+
*/
|
|
649
|
+
declare const LOG_INDICATORS: {
|
|
650
|
+
success: string;
|
|
651
|
+
warning: string;
|
|
652
|
+
error: string;
|
|
653
|
+
info: string;
|
|
654
|
+
debug: string;
|
|
655
|
+
};
|
|
656
|
+
/**
|
|
657
|
+
* Options accepted by each log method.
|
|
658
|
+
*/
|
|
659
|
+
type LoggerOptions = {
|
|
660
|
+
/** Overrides the logger's default prefix for this call. */
|
|
661
|
+
prefix?: string;
|
|
662
|
+
/** Additional data to log alongside the message (e.g., an Error object). */
|
|
663
|
+
data?: unknown;
|
|
664
|
+
};
|
|
665
|
+
/**
|
|
666
|
+
* A logger instance returned by `createLogger` or `withPrefix`.
|
|
667
|
+
*/
|
|
668
|
+
type LoggerInstance = {
|
|
669
|
+
success: (message: string, options?: LoggerOptions) => void;
|
|
670
|
+
warn: (message: string, options?: LoggerOptions) => void;
|
|
671
|
+
error: (message: string, options?: LoggerOptions) => void;
|
|
672
|
+
info: (message: string, options?: LoggerOptions) => void;
|
|
673
|
+
debug: (message: string, options?: LoggerOptions) => void;
|
|
674
|
+
/** Returns a new logger instance with the given prefix fixed as its default. */
|
|
675
|
+
withPrefix: (prefix: string) => LoggerInstance;
|
|
676
|
+
};
|
|
677
|
+
/**
|
|
678
|
+
* Creates an isomorphic logger that works in both browser and Node.js environments.
|
|
679
|
+
* ANSI indicators are automatically hidden in browser environments.
|
|
680
|
+
* @param defaultPrefix An optional prefix prepended to all messages as `[prefix]`.
|
|
681
|
+
* @param prefixLength The total character width reserved for the prefix column, used to
|
|
682
|
+
* align messages across loggers with different prefix lengths (optional, defaults to 10).
|
|
683
|
+
*/
|
|
684
|
+
declare function createLogger(defaultPrefix?: string, prefixLength?: number): LoggerInstance;
|
|
685
|
+
/**
|
|
686
|
+
* A thin isomorphic logger instance usable in both browser and Node.js environments.
|
|
687
|
+
*/
|
|
688
|
+
declare const logger: LoggerInstance;
|
|
689
|
+
/**
|
|
690
|
+
* Generates a short logger prefix from a UUID, optionally scoped by a label.
|
|
691
|
+
* @param uuid The UUID to derive the prefix from.
|
|
692
|
+
* @param prefix An optional label to prepend (e.g., "worker" → "worker-a1b").
|
|
693
|
+
* @returns A short prefix string like "a1b" or "worker-a1b".
|
|
694
|
+
*/
|
|
695
|
+
declare function generateLoggerPrefix(uuid: string, prefix?: string): string;
|
|
696
|
+
|
|
593
697
|
/**
|
|
594
698
|
* Map a number to a range of numbers.
|
|
595
699
|
* @param value The number to map.
|
|
@@ -646,6 +750,19 @@ declare function decodeObjectURIComponents(obj: Partial<{
|
|
|
646
750
|
[key: string]: string | string[];
|
|
647
751
|
}>;
|
|
648
752
|
|
|
753
|
+
/**
|
|
754
|
+
* Returns the inverse of a hex color string (e.g., "#aabbcc" -> "#554433").
|
|
755
|
+
* @param hexColor The hex color string to invert.
|
|
756
|
+
* @returns The inverted hex color string, or the original if the format is invalid.
|
|
757
|
+
*/
|
|
758
|
+
declare function invertHexColor(hexColor: string): string;
|
|
759
|
+
/**
|
|
760
|
+
* Applies an opacity factor to a hex color, returning a 4-channel hex string.
|
|
761
|
+
* @param hexColor The hex color string to modify.
|
|
762
|
+
* @param opacity The opacity factor (0–1) to apply.
|
|
763
|
+
* @returns The 8-character hex color string with applied opacity, or the original if the format is invalid.
|
|
764
|
+
*/
|
|
765
|
+
declare function applyHexColorOpacity(hexColor: string, opacity: number): string;
|
|
649
766
|
/**
|
|
650
767
|
* Shades a color by a percentage.
|
|
651
768
|
* @param color The color to shade.
|
|
@@ -684,4 +801,4 @@ type CGASStatus = {
|
|
|
684
801
|
message: string
|
|
685
802
|
}
|
|
686
803
|
|
|
687
|
-
export { BaseErrors, type CGASStatus, type CGASStatusString, COUNTRIES_SELECT_FIELD, Country, CyCONSTANTS, type ErrorObj, type FailedRequest, type RequestResult, type SuccessfulRequest, arrayEqual, convertErrorToString, decodeObjectURIComponents, formatBytes, formatCountryName, formatErrorResponse, formatHRTime, formatJson, formatMessageAsStringifiedError, formatPercentage, formatTime, formatUnit, fullyPermissiveCspHeader, getCountryNameFromCode, isClient, isServer, isValidIntId, isValidSlug, mapRange, parseCRUDError, parseQueryNumberArray, parseQueryStringArray, safeAverage, safePercentage, shadeColor, slugifyName, stringify, stringifyError, truncateString };
|
|
804
|
+
export { BaseErrors, type CGASStatus, type CGASStatusString, COUNTRIES_SELECT_FIELD, Country, CyCONSTANTS, type ErrorObj, type FailedRequest, LOG_INDICATORS, type LoggerInstance, type LoggerOptions, type RequestResult, type RequiredEnvVars, type SuccessfulRequest, applyHexColorOpacity, arrayEqual, bigintToMetricFormatted, bigintToScientific, checkEnvironmentVariables, convertErrorToString, createLogger, decodeObjectURIComponents, formatBytes, formatCountryName, formatDate, formatErrorResponse, formatHRTime, formatJson, formatMessageAsStringifiedError, formatPercentage, formatRelativeTime, formatTime, formatUnit, fullyPermissiveCspHeader, generateLoggerPrefix, getCountryNameFromCode, invertHexColor, isClient, isServer, isValidIntId, isValidSlug, logger, mapRange, parseCRUDError, parseQueryNumberArray, parseQueryStringArray, safeAverage, safePercentage, shadeColor, slugifyName, stringify, stringifyError, truncateString };
|
package/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import T from'slugify';function I(){return typeof window>"u"}function R(){return !I()}function h(i,a){if(i===a)return true;let{length:r}=i;if(r!==a.length)return false;for(let t=0;t<r;t++)if(i[t]!==a[t])return false;return true}function D(i){return JSON.stringify(JSON.parse(i),null,4)}function m(i,a=4){return JSON.stringify(i,(r,t)=>typeof t=="function"||typeof t=="bigint"?t.toString():t,a)}var l={success:"\x1B[32m \u2713 \x1B[0m",warning:"\x1B[35m \u26A0 \x1B[0m",error:"\x1B[31m \u2717 \x1B[0m",info:"\x1B[33m \u25CB \x1B[0m",debug:"\x1B[34m \u25B7 \x1B[0m"};function E(i,a=10){function r(t,n,s,o){let g=typeof window<"u",b="",c=o?.prefix??i;c&&(b=`[${c}]${g?" ":" ".repeat(a-(c.length+2))}`);let f=`${g?"":t}${b}${s}`;if(o?.data===void 0)n(f);else {let p=m(o.data,2).split(`
|
|
2
|
+
`).map(d=>g?d:` ${d}`).join(`
|
|
3
|
+
`);n(`${f}:`,`
|
|
4
|
+
${p}`);}}return {success:(t,n)=>r(l.success,console.log,t,n),warn:(t,n)=>r(l.warning,console.warn,t,n),error:(t,n)=>r(l.error,console.error,t,n),info:(t,n)=>r(l.info,console.log,t,n),debug:(t,n)=>r(l.debug,console.debug,t,n),withPrefix:t=>E(t,a)}}var S=E();function F(i,a){return `${a?`${a}-`:""}${i.replaceAll("-","").slice(0,3)}`}function G(i,a){if(i.public.length===0&&i.private.length===0)return;let r=typeof window>"u"?"server":"client",n=(r==="server"?i.private:i.public).filter(s=>a[s]===void 0);if(n.length>0){let s=`Missing required environment variables: ${n.join(", ")}`;if(process.env.NODE_ENV==="production")S.error(s);else throw new Error(s)}else S.success(`All required environment variables are set for the '${r}' environment.`);if(r==="client"){let s=i.private.filter(o=>a[o]!==void 0);if(s.length>0){let o=`Private environment variables exposed to the client: ${s.join(", ")}`;if(process.env.NODE_ENV==="production")S.error(o);else throw new Error(o)}}}var O={HASH_SALT_ROUNDS:12,MIN_USERNAME_LENGTH:4,MAX_USERNAME_LENGTH:36,MIN_PASSWORD_LENGTH:8,MAX_PASSWORD_LENGTH:255,MAX_NAME_LENGTH:255,MAX_SLUG_LENGTH:255,MIN_FIRST_NAME_LENGTH:1,MAX_FIRST_NAME_LENGTH:36,MIN_LAST_NAME_LENGTH:1,MAX_LAST_NAME_LENGTH:36,MAX_DESCRIPTION_LENGTH:1024,MAX_URL_LENGTH:2048,MAX_MIME_TYPE_LENGTH:255,MAX_EXTERNAL_LINKS_COUNT:6,USERNAME_REGEX:/^[a-zA-Z0-9_.-]+$/,SLUG_REGEX:/^[a-zA-Z0-9-]+$/,IMG_SIZES_HIGH_QUALITY:"(max-width: 768px) 100vw, (max-width: 1200px) 75vw, 50vw",IMG_SIZES_MEDIUM_QUALITY:"(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 40vw",IMG_SIZES_BASE_QUALITY:"(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw",IMG_SIZES_LOW_QUALITY:"(max-width: 768px) 100vw, (max-width: 1200px) 40vw, 25vw"},N=O;var u=(e=>(e.Afghanistan="AF",e.AlandIslands="AX",e.Albania="AL",e.Algeria="DZ",e.AmericanSamoa="AS",e.Andorra="AD",e.Angola="AO",e.Anguilla="AI",e.Antarctica="AQ",e.AntiguaAndBarbuda="AG",e.Argentina="AR",e.Armenia="AM",e.Aruba="AW",e.Australia="AU",e.Austria="AT",e.Azerbaijan="AZ",e.Bahamas="BS",e.Bahrain="BH",e.Bangladesh="BD",e.Barbados="BB",e.Belarus="BY",e.Belgium="BE",e.Belize="BZ",e.Benin="BJ",e.Bermuda="BM",e.Bhutan="BT",e.Bolivia="BO",e.BonaireSintEustatiusSaba="BQ",e.BosniaAndHerzegovina="BA",e.Botswana="BW",e.BouvetIsland="BV",e.Brazil="BR",e.BritishIndianOceanTerritory="IO",e.BruneiDarussalam="BN",e.Bulgaria="BG",e.BurkinaFaso="BF",e.Burundi="BI",e.Cambodia="KH",e.Cameroon="CM",e.Canada="CA",e.CapeVerde="CV",e.CaymanIslands="KY",e.CentralAfricanRepublic="CF",e.Chad="TD",e.Chile="CL",e.China="CN",e.ChristmasIsland="CX",e.CocosKeelingIslands="CC",e.Colombia="CO",e.Comoros="KM",e.Congo="CG",e.CongoDemocraticRepublic="CD",e.CookIslands="CK",e.CostaRica="CR",e.CoteDIvoire="CI",e.Croatia="HR",e.Cuba="CU",e.Curacao="CW",e.Cyprus="CY",e.CzechRepublic="CZ",e.Denmark="DK",e.Djibouti="DJ",e.Dominica="DM",e.DominicanRepublic="DO",e.Ecuador="EC",e.Egypt="EG",e.ElSalvador="SV",e.EquatorialGuinea="GQ",e.Eritrea="ER",e.Estonia="EE",e.Ethiopia="ET",e.FalklandIslands="FK",e.FaroeIslands="FO",e.Fiji="FJ",e.Finland="FI",e.France="FR",e.FrenchGuiana="GF",e.FrenchPolynesia="PF",e.FrenchSouthernTerritories="TF",e.Gabon="GA",e.Gambia="GM",e.Georgia="GE",e.Germany="DE",e.Ghana="GH",e.Gibraltar="GI",e.Greece="GR",e.Greenland="GL",e.Grenada="GD",e.Guadeloupe="GP",e.Guam="GU",e.Guatemala="GT",e.Guernsey="GG",e.Guinea="GN",e.GuineaBissau="GW",e.Guyana="GY",e.Haiti="HT",e.HeardIslandMcdonaldIslands="HM",e.HolySeeVaticanCityState="VA",e.Honduras="HN",e.HongKong="HK",e.Hungary="HU",e.Iceland="IS",e.India="IN",e.Indonesia="ID",e.Iran="IR",e.Iraq="IQ",e.Ireland="IE",e.IsleOfMan="IM",e.Israel="IL",e.Italy="IT",e.Jamaica="JM",e.Japan="JP",e.Jersey="JE",e.Jordan="JO",e.Kazakhstan="KZ",e.Kenya="KE",e.Kiribati="KI",e.Korea="KR",e.KoreaDemocraticPeoplesRepublic="KP",e.Kuwait="KW",e.Kyrgyzstan="KG",e.LaoPeoplesDemocraticRepublic="LA",e.Latvia="LV",e.Lebanon="LB",e.Lesotho="LS",e.Liberia="LR",e.LibyanArabJamahiriya="LY",e.Liechtenstein="LI",e.Lithuania="LT",e.Luxembourg="LU",e.Macao="MO",e.Macedonia="MK",e.Madagascar="MG",e.Malawi="MW",e.Malaysia="MY",e.Maldives="MV",e.Mali="ML",e.Malta="MT",e.MarshallIslands="MH",e.Martinique="MQ",e.Mauritania="MR",e.Mauritius="MU",e.Mayotte="YT",e.Mexico="MX",e.Micronesia="FM",e.Moldova="MD",e.Monaco="MC",e.Mongolia="MN",e.Montenegro="ME",e.Montserrat="MS",e.Morocco="MA",e.Mozambique="MZ",e.Myanmar="MM",e.Namibia="NA",e.Nauru="NR",e.Nepal="NP",e.Netherlands="NL",e.NewCaledonia="NC",e.NewZealand="NZ",e.Nicaragua="NI",e.Niger="NE",e.Nigeria="NG",e.Niue="NU",e.NorfolkIsland="NF",e.NorthernMarianaIslands="MP",e.Norway="NO",e.Oman="OM",e.Pakistan="PK",e.Palau="PW",e.PalestinianTerritory="PS",e.Panama="PA",e.PapuaNewGuinea="PG",e.Paraguay="PY",e.Peru="PE",e.Philippines="PH",e.Pitcairn="PN",e.Poland="PL",e.Portugal="PT",e.PuertoRico="PR",e.Qatar="QA",e.Reunion="RE",e.Romania="RO",e.RussianFederation="RU",e.Rwanda="RW",e.SaintBarthelemy="BL",e.SaintHelena="SH",e.SaintKittsAndNevis="KN",e.SaintLucia="LC",e.SaintMartin="MF",e.SaintPierreAndMiquelon="PM",e.SaintVincentAndGrenadines="VC",e.Samoa="WS",e.SanMarino="SM",e.SaoTomeAndPrincipe="ST",e.SaudiArabia="SA",e.Senegal="SN",e.Serbia="RS",e.Seychelles="SC",e.SierraLeone="SL",e.Singapore="SG",e.SintMaarten="SX",e.Slovakia="SK",e.Slovenia="SI",e.SolomonIslands="SB",e.Somalia="SO",e.SouthAfrica="ZA",e.SouthGeorgiaAndSandwichIsl="GS",e.SouthSudan="SS",e.Spain="ES",e.SriLanka="LK",e.Sudan="SD",e.Suriname="SR",e.SvalbardAndJanMayen="SJ",e.Swaziland="SZ",e.Sweden="SE",e.Switzerland="CH",e.SyrianArabRepublic="SY",e.Taiwan="TW",e.Tajikistan="TJ",e.Tanzania="TZ",e.Thailand="TH",e.TimorLeste="TL",e.Togo="TG",e.Tokelau="TK",e.Tonga="TO",e.TrinidadAndTobago="TT",e.Tunisia="TN",e.Turkey="TR",e.Turkmenistan="TM",e.TurksAndCaicosIslands="TC",e.Tuvalu="TV",e.Uganda="UG",e.Ukraine="UA",e.UnitedArabEmirates="AE",e.UnitedKingdom="GB",e.UnitedStates="US",e.UnitedStatesOutlyingIslands="UM",e.Uruguay="UY",e.Uzbekistan="UZ",e.Vanuatu="VU",e.Venezuela="VE",e.Vietnam="VN",e.VirginIslandsBritish="VG",e.VirginIslandsUS="VI",e.WallisAndFutuna="WF",e.WesternSahara="EH",e.Yemen="YE",e.Zambia="ZM",e.Zimbabwe="ZW",e))(u||{});function A(i){return i==="CoteDIvoire"?"Cote D'Ivoire":i==="VirginIslandsUS"?"Virgin Islands US":i.replace(/([A-Z])/g," $1").trim()}var $=Object.entries(u).map(([i,a])=>({label:A(i),value:a}));function U(i){let a=Object.entries(u).find(([,r])=>r===i);return a?A(a[0]):void 0}var _=u;function w(i,a,r){let t;return r?t={...i,data:r}:t=i,{success:false,message:a||i.message,error:t}}function B(i,a,r){a&&(i.message=a);let t;return r?t={...i,data:r}:t=i,JSON.stringify(t,(s,o)=>typeof o=="function"||typeof o=="bigint"?o.toString():o,4)}function v(i){let a="";try{try{a=i.toString();}catch{a=m(i);}}catch{a="Unknown error";}return {success:false,message:"An error occurred while performing a CRUD operation.",error:{status:500,name:"CRUD_ERROR",message:"CRUD operation failed.",data:{rawError:i,error:a}}}}function P(i,a){let r={status:500,name:"UNKNOWN_ERROR",message:"An unknown error occurred.",data:null};if(a)try{m(a,4),r=a;}catch{r={...r,data:{rawError:`${a}`}};}return m({success:false,message:i,error:r}).replaceAll("Error: ","").replaceAll(`
|
|
5
|
+
`," ")}var H={BAD_REQUEST:{status:400,name:"BadRequest",message:"Bad request.",data:null},UNAUTHORIZED:{status:401,name:"Unauthorized",message:"Unauthorized.",data:null},PAYMENT_REQUIRED:{status:402,name:"PaymentRequired",message:"Payment required.",data:null},FORBIDDEN:{status:403,name:"Forbidden",message:"Forbidden.",data:null},NOT_FOUND:{status:404,name:"NotFound",message:"Not found.",data:null},METHOD_NOT_ALLOWED:{status:405,name:"MethodNotAllowed",message:"Method not allowed.",data:null},REQUEST_TIMEOUT:{status:408,name:"RequestTimeout",message:"Request timed out.",data:null},CONFLICT:{status:409,name:"Conflict",message:"Conflict.",data:null},INTERNAL_SERVER_ERROR:{status:500,name:"InternalServerError",message:"Internal server error.",data:null},BACKEND_FUNCTION_RUNNING_ON_CLIENT:{status:500,name:"BackendFunctionRunningOnClient",message:"A function reserved for the backend is running on the client.",data:null},NOT_IMPLEMENTED:{status:501,name:"NotImplemented",message:"Not implemented.",data:null},BANDWIDTH_LIMIT_EXCEEDED:{status:509,name:"BandwidthLimitExceeded",message:"Bandwidth limit exceeded.",data:null}};var x=T.default||T;function k(i){return typeof i=="string"&&i.length>0&&Number.isInteger(Number(i))&&Number(i)>=0}function K(i){return typeof i=="string"&&i.length>0&&N.SLUG_REGEX.test(i)}function V(i,a="Op",r="s",t=12,n=true){let s;typeof a=="string"&&typeof r=="string"?s=`${a}/${r}`:typeof a=="string"?s=a:s="";let o=n?" ":"";return i>=10**24?`${(i/10**24).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}Y${s}`.padStart(t," "):i>=10**18?`${(i/10**18).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}E${s}`.padStart(t," "):i>=10**15?`${(i/10**15).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}P${s}`.padStart(t," "):i>=10**12?`${(i/10**12).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}T${s}`.padStart(t," "):i>=10**9?`${(i/10**9).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}G${s}`.padStart(t," "):i>=10**6?`${(i/10**6).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}M${s}`.padStart(t," "):i>=10**3?`${(i/10**3).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}k${s}`.padStart(t," "):`${i.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}${o}${s}`.padStart(t," ")}function Z(i,a=8){return i>=3600000000000000n?`${(Number(i)/36e14).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}h`.padStart(a," "):i>=60000000000n?`${(Number(i)/6e10).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}m`.padStart(a," "):i>=1000000000n?`${(Number(i)/1e9).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}s`.padStart(a," "):i>=1000000n?`${(Number(i)/1e6).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}ms`.padStart(a," "):i>=1000n?`${(Number(i)/1e3).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}\xB5s`.padStart(a," "):`${i.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}ns`.padStart(a," ")}function J(i,a=10){return i>=36e5?`${(i/36e5).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}h`.padStart(a," "):i>=6e4?`${(i/6e4).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}m`.padStart(a," "):i>=1e3?`${(i/1e3).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}s`.padStart(a," "):`${i.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}ms`.padStart(a," ")}function q(i,a=7){return `${i.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}%`.padStart(a," ")}function j(i,a){return i.length<=a?i:`${i.slice(0,a)}...`}function W(i){let a=[],r=Array.isArray(i)?i:i.split(",").map(t=>t.trim());for(let t of r){let n=Number.parseInt(t,10);Number.isNaN(n)||a.push(n);}return a}function Y(i){let a=[],r=Array.isArray(i)?i:i.split(",").map(t=>t.trim());for(let t of r)t.length>0&&a.push(t);return a}var L={lower:true,strict:true};function X(i,a){if(a){let r=a.match(/-(\d+)$/);if(r){let t=Number.parseInt(r[1],10),n=a.slice(0,-r[0].length);return x(`${n}-${t+1}`,L)}}return x(i,L)}function z(i){let a=Math.floor((Date.now()-i.getTime())/1e3);if(a<60)return "just now";let r=Math.floor(a/60);if(r<60)return `${r}m ago`;let t=Math.floor(r/60);return t<24?`${t}h ago`:i.toLocaleDateString()}function Q(i){return i.toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:true})}function y(i,a=2){if(i===0n)return ["0",0];let r=i.toString(),t=r.length-1;return t===0?[r,0]:[`${r[0]}.${r.slice(1,a+1).padEnd(a,"0")}`.replace(/\.?0+$/,""),t]}function C(i){let a=i<0n,r=i<0n?-i:i,t=["","k","M","G","T","P","E"],n=r.toString(),s=Math.floor((n.length-1)/3);if(s>=t.length&&(s=t.length-1),s<=0)return i.toString();let o=1000n**BigInt(s),c=(r*10n/o).toString().padStart(2,"0"),f=c.slice(0,-1)||"0",p=c.slice(-1),d=a?"-":"",M=t[s];return p==="0"?`${d}${f}${M}`:`${d}${f}.${p}${M}`}function ee(i,a=2){if(i===0)return "0 Bytes";let r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(i)/Math.log(1024));return `${parseFloat((i/1024**t).toFixed(a<0?0:a))} ${r[t]}`}function ie(i,a,r,t,n,s=true){let o=(i-a)*(n-t)/(r-a)+t;return s?Math.min(Math.max(o,t),n):o}function ae(i,a,r=2){if(!a)return 0;let t=typeof i=="string"?parseFloat(i):i,n=typeof a=="string"?parseFloat(a):a;return parseFloat(((t||0)/(n||1)).toFixed(r))}function te(i,a,r=2){if(!a)return 0;let t=typeof i=="string"?parseFloat(i):i,n=typeof a=="string"?parseFloat(a):a;return n?parseFloat((((t||0)-(n||0))/(n||1)*100).toFixed(r)):t&&t>0?-1:0}var re=`
|
|
3
6
|
default-src * data: mediastream: blob: filesystem: about: ws: wss: 'unsafe-eval' 'wasm-unsafe-eval' 'unsafe-inline';
|
|
4
7
|
script-src * data: blob: 'unsafe-inline' 'unsafe-eval';
|
|
5
8
|
script-src-elem * data: blob: 'unsafe-inline';
|
|
@@ -10,5 +13,5 @@ import f from'slugify';function N(){return !S()}function S(){return typeof windo
|
|
|
10
13
|
style-src * data: blob: 'unsafe-inline';
|
|
11
14
|
font-src * data: blob: 'unsafe-inline';
|
|
12
15
|
frame-ancestors * data: blob:;
|
|
13
|
-
`.replace(/\s{2,}/g," ").trim();function
|
|
16
|
+
`.replace(/\s{2,}/g," ").trim();function ne(i){if(typeof i=="string")return i;let a="";try{a=JSON.stringify(i);}catch{}return (a===""||a==="{}")&&(a=`${i}`),a}function se(i){for(let a in i)try{i[a]=decodeURIComponent(String(i[a]));}catch{}return i}function oe(i){let a=i.replace(/^#/,"");if(a.length!==6)return i;let r=(255-parseInt(a.slice(0,2),16)).toString(16).padStart(2,"0"),t=(255-parseInt(a.slice(2,4),16)).toString(16).padStart(2,"0"),n=(255-parseInt(a.slice(4,6),16)).toString(16).padStart(2,"0");return `#${r}${t}${n}`}function me(i,a){let r=Math.min(Math.max(a,0),1),t=i.replace(/^#/,"");if(t.length!==6)return i;let n=Math.round(r*255).toString(16).padStart(2,"0");return `#${t}${n}`}function ge(i,a){let r=Number.parseInt(i.substring(1,3),16),t=Number.parseInt(i.substring(3,5),16),n=Number.parseInt(i.substring(5,7),16);r=Math.round(r*(100+a)/100),t=Math.round(t*(100+a)/100),n=Math.round(n*(100+a)/100),r=r<255?r:255,t=t<255?t:255,n=n<255?n:255,r=Math.round(r),t=Math.round(t),n=Math.round(n);let s=r.toString(16).length===1?`0${r.toString(16)}`:r.toString(16),o=t.toString(16).length===1?`0${t.toString(16)}`:t.toString(16),g=n.toString(16).length===1?`0${n.toString(16)}`:n.toString(16);return `#${s}${o}${g}`}export{H as BaseErrors,$ as COUNTRIES_SELECT_FIELD,_ as Country,N as CyCONSTANTS,l as LOG_INDICATORS,me as applyHexColorOpacity,h as arrayEqual,C as bigintToMetricFormatted,y as bigintToScientific,G as checkEnvironmentVariables,ne as convertErrorToString,E as createLogger,se as decodeObjectURIComponents,ee as formatBytes,A as formatCountryName,Q as formatDate,w as formatErrorResponse,Z as formatHRTime,D as formatJson,P as formatMessageAsStringifiedError,q as formatPercentage,z as formatRelativeTime,J as formatTime,V as formatUnit,re as fullyPermissiveCspHeader,F as generateLoggerPrefix,U as getCountryNameFromCode,oe as invertHexColor,R as isClient,I as isServer,k as isValidIntId,K as isValidSlug,S as logger,ie as mapRange,v as parseCRUDError,W as parseQueryNumberArray,Y as parseQueryStringArray,ae as safeAverage,te as safePercentage,ge as shadeColor,X as slugifyName,m as stringify,B as stringifyError,j as truncateString};//# sourceMappingURL=index.js.map
|
|
14
17
|
//# sourceMappingURL=index.js.map
|