{"version":3,"file":"typescript-class-helpers-browser.mjs","sources":["../../../tmp-libs-for-dist/typescript-class-helpers/projects/typescript-class-helpers/src/lib/typescript-class-helpers.ts","../../../tmp-libs-for-dist/typescript-class-helpers/projects/typescript-class-helpers/src/typescript-class-helpers-browser.ts"],"sourcesContent":["/* */                                              \nimport { _, CoreModels, UtilsOs } from 'tnp-core/browser';\nimport { Helpers } from 'tnp-core/browser';\n\nconst REGISTRY_SYMBOL = Symbol.for('TAON.CLASS_REGISTRY');\n\ntype Registry = Map<string, Function>;\n\nfunction getRegistry(): Registry {\n  const g = globalThis as any;\n\n  if (!g[REGISTRY_SYMBOL]) {\n    g[REGISTRY_SYMBOL] = new Map<string, Function>();\n  }\n\n  return g[REGISTRY_SYMBOL];\n}\n\nconst classes = getRegistry();\n\nexport function getClassName(target: Function): string | undefined {\n  if (_.isNil(target)) {\n    return void 0;\n  }\n  if (_.isString(target)) {\n    return target;\n  }\n\n  if (target === Date) {\n    return 'Date';\n  }\n\n  if ((target as any) === FormData) {\n    return 'FormData';\n  }\n\n  if (!_.isFunction(target)) {\n    // console.log(target);\n    Helpers.log(\n      `[typescript-class-helpers][getClassName] target is not a class`,\n    );\n    return void 0;\n  }\n\n  if (!_.isNil(target[CoreModels.ClassNameStaticProperty])) {\n    return target[CoreModels.ClassNameStaticProperty];\n  }\n\n  // special thing when cloning classes\n  if (target.name?.startsWith('class_')) {\n    return '';\n  }\n\n  return;\n}\n\nexport function getFromObject(o: Object) {\n  if (_.isUndefined(o) || _.isNull(o)) {\n    return;\n  }\n  if (o.constructor) {\n    return o.constructor;\n  }\n  const p = Object.getPrototypeOf(o);\n  return p && p.constructor;\n}\n\nconst notAllowedAsMethodName = [\n  'length',\n  'name',\n  'arguments',\n  'caller',\n  'constructor',\n  'apply',\n  'bind',\n  'call',\n  'toString',\n  '__defineGetter__',\n  '__defineSetter__',\n  'hasOwnProperty',\n  '__lookupGetter__',\n  '__lookupSetter__',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'valueOf',\n  '__proto__',\n  'toLocaleString',\n];\n\nexport namespace CLASS {\n  /**\n   * PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE\n   * Decorator requred for production mode\n   * @param name Name of class\n   */\n  export function NAME(className: string) {\n    return function (target: Function) {\n      return setClassName(target, className);\n    } as any;\n  }\n\n  export function setName(target: Function, className: string) {\n    setClassName(target, className);\n  }\n\n  export function getClassNameFromObjInstanceOrClassFn(\n    target: any,\n  ): string | undefined {\n    if (typeof target === 'object') {\n      return getNameFromObject(target);\n    }\n    return getClassName(target);\n  }\n\n  export function setClassName(target: Function, className: string): void {\n    target[CoreModels.ClassNameStaticProperty] = className;\n    classes.set(className, target);\n  }\n  export function getBy(className: string | Function): Function {\n    let res;\n    if (Array.isArray(className)) {\n      if (className.length !== 1) {\n        throw `Mapping error... please use proper class names:\n  {\n    propertyObject: 'MyClassName',\n    propertyWithArray: ['MyClassName']\n  }\n\n        `;\n      }\n      className = className[0];\n    }\n    if (typeof className === 'function') {\n      // TODO QUICK_FIX\n      res = className;\n    }\n    if (className === 'Date') {\n      res = Date;\n    }\n\n    if (className === 'FormData') {\n      res = FormData;\n    }\n\n    const classFromMap = classes.get(className as string);\n    return classFromMap ? classFromMap : res;\n  }\n\n  export function getFromObject(o: Object): Function | undefined{\n    if (_.isUndefined(o) || _.isNull(o)) {\n      return;\n    }\n    if (o.constructor) {\n      return o.constructor;\n    }\n    const p = Object.getPrototypeOf(o);\n    return p && p.constructor;\n  }\n\n  export function getName(target: Function): string | undefined {\n    return getClassName(target) as string;\n  }\n  export function getNameFromObject(o: Object): string | undefined {\n    const fnCLass = getFromObject(o);\n    return getName(fnCLass);\n  }\n\n  export const getMethodsNames = (\n    classOrClassInstance: any,\n    allMethodsNames = [],\n  ): string[] => {\n    if (!classOrClassInstance) {\n      return allMethodsNames;\n    }\n\n    const isClassFunction = _.isFunction(classOrClassInstance);\n    const classFun = isClassFunction\n      ? classOrClassInstance\n      : Object.getPrototypeOf(classOrClassInstance);\n    const objectToCheck = isClassFunction\n      ? (classOrClassInstance as Function)?.prototype\n      : classOrClassInstance;\n    const prototypeObj = Object.getPrototypeOf(objectToCheck || {});\n\n    const properties = _.uniq([\n      ...Object.getOwnPropertyNames(objectToCheck || {}),\n      ...Object.getOwnPropertyNames(prototypeObj || {}),\n      ...Object.keys(objectToCheck || {}),\n      ...Object.keys(prototypeObj || {}),\n    ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));\n\n    properties\n      .filter(methodName => typeof objectToCheck[methodName] === 'function')\n      .forEach(p => allMethodsNames.push(p));\n\n    if (\n      !classFun ||\n      !classFun.constructor ||\n      classFun?.constructor?.name === 'Object'\n    ) {\n      return allMethodsNames;\n    }\n    return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);\n  };\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}