UNPKG

@techmely/utils

Version:

Collection of helpful JavaScript / TypeScript utils

248 lines (240 loc) 6.83 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/is.ts var is_exports = {}; __export(is_exports, { isAndroid: () => isAndroid, isArray: () => isArray, isBase64: () => isBase64, isBoolean: () => isBoolean, isBrowser: () => isBrowser, isCI: () => isCI, isCrawler: () => isCrawler, isDate: () => isDate, isDef: () => isDef, isEmpties: () => isEmpties, isEmpty: () => isEmpty, isFalsy: () => isFalsy, isFunction: () => isFunction, isLinux: () => isLinux, isMacOS: () => isMacOS, isMap: () => isMap, isMobile: () => isMobile, isNodeDev: () => isNodeDev, isNodeProd: () => isNodeProd, isNodeTest: () => isNodeTest, isNotEmpties: () => isNotEmpties, isNotEmpty: () => isNotEmpty, isNotNull: () => isNotNull, isNumber: () => isNumber, isObject: () => isObject, isPngImage: () => isPngImage, isPrimitive: () => isPrimitive, isPromise: () => isPromise, isSet: () => isSet, isStream: () => isStream, isString: () => isString, isSymbol: () => isSymbol, isUndef: () => isUndef, isWindows: () => isWindows }); module.exports = __toCommonJS(is_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 function isNotNull(v) { return v !== null; } function isArray(val) { return val && Array.isArray(val); } function isPrimitive(value) { if (value === null) { return true; } return !["array", "function", "object"].includes(typeof value); } var isDef = (val) => typeof val !== "undefined"; var isUndef = (val) => !isDef(val); var isBoolean = (val) => typeof val === "boolean"; var isFunction = (val) => typeof val === "function"; var isNumber = (val) => toString.call(val) === "[object Number]"; var isString = (val) => typeof val === "string"; var isObject = (val) => toString.call(val) === "[object Object]"; var isMap = (val) => toString.call(val) === "[object Map]"; var isSet = (val) => toString.call(val) === "[object Set]"; var isDate = (val) => toString.call(val) === "[object Date]"; var isSymbol = (val) => typeof val === "symbol"; var isPromise = (val) => { return isObject(val) && isFunction(val.then) && isFunction(val.catch); }; var isFalsy = (val) => isNotNull(val) && isDef(val) && isNotEmpty(val); var isStream = (val) => val !== null && typeof val === "object" && typeof val.pipe === "function"; var isBrowser = typeof window !== "undefined"; var isEmptyArr = (array) => array?.length === 0; function isEmpty(val) { if (!val) { return true; } if (isArray(val)) { return isEmptyArr(val); } if (isString(val)) { return val.trim().length === 0; } if (val instanceof Map || val instanceof Set) { return val.size === 0; } if (isObject(val)) { return Object.keys(val).length === 0; } return false; } function isNotEmpty(val) { return !isEmpty(val); } function isNotEmpties(...args) { if (args.length > 1) { return args.reduce((a, b) => a && isNotEmpty(b), true); } return false; } function isEmpties(...args) { if (args.length > 1) { return args.reduce((a, b) => a && isEmpty(b), true); } return false; } function isPngImage(buffer) { if (!buffer || buffer.length < 8) { return false; } return buffer[0] === 137 && buffer[1] === 80 && buffer[2] === 78 && buffer[3] === 71 && buffer[4] === 13 && buffer[5] === 10 && buffer[6] === 26 && buffer[7] === 10; } var isBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$/; 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 isNodeProd = nodeENV === "production"; var isNodeDev = nodeENV === "dev" || nodeENV === "development"; var isWindows = /^win/i.test(platform); var isLinux = /^linux/i.test(platform); var isMacOS = /^darwin/i.test(platform); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { isAndroid, isArray, isBase64, isBoolean, isBrowser, isCI, isCrawler, isDate, isDef, isEmpties, isEmpty, isFalsy, isFunction, isLinux, isMacOS, isMap, isMobile, isNodeDev, isNodeProd, isNodeTest, isNotEmpties, isNotEmpty, isNotNull, isNumber, isObject, isPngImage, isPrimitive, isPromise, isSet, isStream, isString, isSymbol, isUndef, isWindows });