(function(e,i){typeof exports=="object"&&typeof module<"u"?i(exports):typeof define=="function"&&define.amd?define(["exports"],i):(e=typeof globalThis<"u"?globalThis:e||self,i(e.TypeTls={}))})(this,function(e){"use strict";function i(n){var t=typeof n;return n&&(t==="object"||t==="function")}function u(n){var t=n;return n!=null&&(t=n.constructor,t==null&&(t=typeof n)),t}function r(n){switch(n){case void 0:return"undefined";case null:return"null"}let t=typeof n;switch(t){case"function":return n.name;case"string":return n;default:return t}}function s(n){return globalThis[n]}function f(n){let t=u(n);return r(t)}function c(n){return n==null||i(n)?u(n):typeof n}function a(n){var t=c(n);return r(t)}function y(n){var t=typeof n;return n==null||t!=="object"&&t!=="function"}function l(n){let t=n&&n.length;return Number.isInteger(n.length)&&t>=0}function T(n){return n&&typeof n[Symbol.iterator]=="function"}function g(n){return n&&typeof n.next=="function"}const d=/^[A-Za-z_$]+[\w$]*$/;function A(n){return d.test(n)}const b=/(^\s*(async\s+)?\s*(\b[A-Za-z_$]+[\w$]*\b)\s*=>)|(^\s*(async\s+)?\s*\(\s*(\b[A-Za-z_$]+[\w$]*\b)?\s*(,\s*(\b[A-Za-z_$]+[\w$]*\b)\s*)*\)\s*=>)/;function m(n){const t=n.toString();return b.test(t)}const F=globalThis.AsyncFunction??(async function(){}).constructor;function p(n){return n instanceof F}const O=globalThis.GeneratorFunction??(function*(){}).constructor;function h(n){return n instanceof O}const w=globalThis.AsyncGeneratorFunction??(async function*(){}).constructor;function $(n){return n instanceof w}const v=/(^\s*(async\s+)?function\s*(\s|\*)\s*)[A-Za-z_$]+[\w$]*(\s*\()/;function N(n){if(n.name){const t=n.toString();return!v.test(t)}return!0}function S(n,t){return n instanceof Promise?n.then(o=>t(o,!1,void 0),o=>t(void 0,!0,o)):t(n,!1,void 0)}e.getExactTypeNameOf=a,e.getExactTypeOf=c,e.getNameOfType=r,e.getTypeByName=s,e.getTypeNameOf=f,e.getTypeOf=u,e.isAnonymousFunction=N,e.isArrayLike=l,e.isArrowFunction=m,e.isAsyncFunction=p,e.isAsyncGeneratorFunction=$,e.isBaseType=y,e.isGeneratorFunction=h,e.isIdentifier=A,e.isIterable=T,e.isIterator=g,e.isObject=i,e.waitAsyncable=S,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});