UNPKG

@techmely/utils

Version:

Collection of helpful JavaScript / TypeScript utils

176 lines (167 loc) 5.21 kB
/*! * @techmely/utils * Copyright(c) 2021-2024 Techmely <techmely.creation@gmail.com> * MIT Licensed */ "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/date.ts var date_exports = {}; __export(date_exports, { SortDirection: () => SortDirection, getQuarter: () => getQuarter, isSameMonth: () => isSameMonth, isToday: () => isToday, sortByDate: () => sortByDate, sortData: () => sortData, suffixAmPm: () => suffixAmPm }); module.exports = __toCommonJS(date_exports); // src/convert.ts function toBoolean(val) { return val ? val !== "false" : false; } // src/env.ts var import_meta = {}; var _envShim = /* @__PURE__ */ Object.create(null); var _getEnv = (useShim) => globalThis.process?.env || // Node.js/Bun import_meta.env || // Vite env globalThis.Deno?.env.toObject() || // Deno env globalThis.__env__ || // Custom env (useShim ? _envShim : globalThis); var envs = new Proxy(_envShim, { get(_, prop) { const env = _getEnv(); return env[prop] ?? _envShim[prop]; }, has(_, prop) { const env = _getEnv(); return prop in env || prop in _envShim; }, set(_, prop, value) { const env = _getEnv(true); env[prop] = value; return true; }, deleteProperty(_, prop) { if (!prop) { return false; } const env = _getEnv(true); delete env[prop]; return true; }, ownKeys() { const env = _getEnv(); return Object.keys(env); } }); var nodeENV = typeof process !== "undefined" && process.env && process.env.NODE_ENV || ""; // src/process.ts var _process = globalThis.process || /* @__PURE__ */ Object.create(null); var processShims = { versions: {} }; var process2 = new Proxy(_process, { get(target, prop) { if (prop === "env") { return envs; } if (prop in target) { return target[prop]; } if (prop in processShims) { return processShims[prop]; } } }); var platform = _process.platform || ""; // src/is.ts var isNumber = (val) => toString.call(val) === "[object Number]"; var isBrowser = typeof window !== "undefined"; var isAndroid = isBrowser ? /(android)/i.test(navigator.userAgent) : false; var match = isBrowser ? window.matchMedia || window.msMatchMedia : void 0; var isMobile = isBrowser ? match?.("(pointer:coarse)")?.matches : false; var isCrawler = isBrowser && (!("onscroll" in window) || /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent)); var isCI = toBoolean(envs.CI); var isNodeTest = nodeENV === "test" || toBoolean(envs.TEST); var isWindows = /^win/i.test(platform); var isLinux = /^linux/i.test(platform); var isMacOS = /^darwin/i.test(platform); // src/date.ts var isSameDay = (date1, date2) => { if (!(date1 && date2)) { return false; } return date1.getDate() === date2.getDate() && date1.getMonth() === date2.getMonth() && date1.getFullYear() === date2.getFullYear(); }; var isSameMonth = (date1, date2) => { if (!(date1 && date2)) { return false; } return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth(); }; var isToday = (date) => isSameDay(date, /* @__PURE__ */ new Date()); var SortDirection = /* @__PURE__ */ ((SortDirection2) => { SortDirection2["ASC"] = "ASC"; SortDirection2["DESC"] = "DESC"; return SortDirection2; })(SortDirection || {}); function sortByDate(a, b, key, direction = "ASC" /* ASC */) { if (a[key] < b[key]) { return direction === "ASC" /* ASC */ ? 1 : -1; } if (a[key] > b[key]) { return direction === "ASC" /* ASC */ ? -1 : 1; } return 0; } function sortData(a, b, direction = "ASC" /* ASC */, options) { let result = 0; const { locale = "vi", shouldIgnoreZero = false } = options || {}; if (shouldIgnoreZero) { if (a === b) { return 0; } if (a === 0) { return 1; } if (b === 0) { return -1; } } if (isNumber(a) && isNumber(b)) { const aParsed = a?.toString() ?? ""; const bParsed = b?.toString() ?? ""; result = isNumber(a) && isNumber(b) ? a - b : aParsed.localeCompare(bParsed, locale); } return direction === "ASC" /* ASC */ ? result : -result; } var suffixAmPm = (h) => `${h % 12 === 0 ? 12 : h % 12}${h < 12 ? "am" : "pm"}`; var getQuarter = (d = /* @__PURE__ */ new Date()) => Math.ceil((d.getMonth() + 1) / 3); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { SortDirection, getQuarter, isSameMonth, isToday, sortByDate, sortData, suffixAmPm });