{"version":3,"file":"index.umd.production.min.cjs","sources":["../src/index.ts"],"sourcesContent":["import { array_unique_indexOf } from '@lazy-array/util-unique';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\nexport function sortObjectKeys<T extends Record<any, any>>(object: T, sortFn: IOptions<T>[\"sort\"]): T\nexport function sortObjectKeys<T extends Record<any, any>>(object: T, keyOrders: IOptions<T>[\"keys\"]): T\nexport function sortObjectKeys<T extends Record<any, any>>(object: T, options?: Omit<IOptions<T>, 'keys' | 'onlyKeys'> & {\n\tkeys: IOptions<T>[\"keys\"],\n\tonlyKeys: true,\n}): Partial<T>\nexport function sortObjectKeys<T extends Record<any, any>>(object: T, options?: Omit<IOptions<T>, 'useSource'> & {\n\tuseSource: true,\n}): T\nexport function sortObjectKeys<T extends Record<any, any>>(object: T, options?: IOptions<T>): T\nexport function sortObjectKeys<T extends Record<any, any>>(object: T, sortWith: unknown): T | Partial<T>\n{\n\tlet options: IOptions<T> = {};\n\n\tif (typeof sortWith === 'function')\n\t{\n\t\toptions.sort = sortWith as IOptions<T>[\"sort\"];\n\t}\n\telse if (Array.isArray(sortWith))\n\t{\n\t\toptions.keys = sortWith;\n\t}\n\telse\n\t{\n\t\toptions = Object.assign(options, sortWith);\n\t}\n\n\tlet {\n\t\tkeys = [],\n\t\tuseSource,\n\t} = options as {\n\t\tkeys: any[],\n\t\tuseSource: boolean,\n\t};\n\n\tif (Array.isArray(keys))\n\t{\n\t\tkeys = keys.slice();\n\t}\n\n\tif (options.onlyKeys)\n\t{\n\t\tuseSource = false;\n\n\t\tif (typeof keys.length !== 'number' || keys.length === 0)\n\t\t{\n\t\t\tthrow new ReferenceError(`options.key is empty or not exists.`)\n\t\t}\n\t}\n\telse\n\t{\n\t\tkeys = keys\n\t\t\t.concat(Object.keys(object).sort(options.sort))\n\t\t;\n\t}\n\n\tkeys = array_unique_indexOf(keys);\n\n\tif (options.desc)\n\t{\n\t\tkeys = keys.reverse()\n\t}\n\n\tlet ret = keys.reduce(function (total, key)\n\t{\n\t\tif (options.allowNotExists || key in object)\n\t\t{\n\t\t\ttotal[key] = object[key];\n\t\t}\n\n\t\treturn total;\n\t}, {} as Partial<T>);\n\n\tif (useSource)\n\t{\n\t\t(Object.keys(ret) as IOptions<T>[\"keys\"])\n\t\t\t.forEach(function (key)\n\t\t\t{\n\t\t\t\tdelete object[key];\n\t\t\t\tobject[key] = ret[key];\n\t\t\t})\n\t\t;\n\n\t\treturn object;\n\t}\n\n\treturn ret;\n}\n\nexport interface IOptions<T extends Record<any, any> = Record<any, any> , K extends string = Extract<keyof T, string>>\n{\n\t/**\n\t * key order\n\t */\n\tkeys?: ITSArrayListMaybeReadonly<string | K>,\n\t/**\n\t * return Object only keys\n\t * will disable useSource\n\t */\n\tonlyKeys?: boolean,\n\t/**\n\t * sort callback\n\t *\n\t * @param a\n\t * @param b\n\t * @returns {any}\n\t */\n\tsort?: (a: string | K, b: string | K) => number,\n\t/**\n\t * return reversed Object\n\t */\n\tdesc?: boolean,\n\tallowNotExists?: boolean,\n\t/**\n\t * return source Object\n\t */\n\tuseSource?: boolean,\n}\n\nexport { sortObjectKeys as sortObject }\n\nif (process.env.TSDX_FORMAT !== 'esm')\n{\n\n\tObject.defineProperty(sortObjectKeys, 'sortObjectKeys', { value: sortObjectKeys });\n\tObject.defineProperty(sortObjectKeys, 'sortObject', { value: sortObjectKeys });\n\tObject.defineProperty(sortObjectKeys, 'default', { value: sortObjectKeys });\n\tObject.defineProperty(sortObjectKeys, \"__esModule\", { value: true });\n\n}\n\nexport default sortObjectKeys;\n"],"names":["sortObjectKeys","object","sortWith","options","sort","Array","isArray","keys","Object","assign","useSource","slice","onlyKeys","length","ReferenceError","concat","array_unique_indexOf","desc","reverse","ret","reduce","total","key","allowNotExists","forEach","defineProperty","value"],"mappings":";;;;EAagB,SAAAA,eAA2CC,GAAWC;IAErE,IAAIC,IAAuB,CAAA;IAEH,qBAAbD,IAEVC,EAAQC,OAAOF,IAEPG,MAAMC,QAAQJ,KAEtBC,EAAQI,OAAOL,IAIfC,IAAUK,OAAOC,OAAON,GAASD;IAGlC,KAAIK,MACHA,IAAO,IAAEG,WACTA,KACGP;IAUJ,IALIE,MAAMC,QAAQC,OAEjBA,IAAOA,EAAKI,UAGTR,EAAQS;MAIX,IAFAF,KAAY,GAEe,mBAAhBH,EAAKM,UAAuC,MAAhBN,EAAKM,QAE3C,MAAM,IAAIC,eAAe;WAK1BP,IAAOA,EACLQ,OAAOP,OAAOD,KAAKN,GAAQG,KAAKD,EAAQC;IAI3CG,IAAOS,EAAAA,qBAAqBT,IAExBJ,EAAQc,SAEXV,IAAOA,EAAKW;IAGb,IAAIC,IAAMZ,EAAKa,QAAO,SAAUC,GAAOC;MAOtC,QALInB,EAAQoB,kBAAkBD,KAAOrB,OAEpCoB,EAAMC,KAAOrB,EAAOqB,KAGdD;AACP,QAAE,CAAgB;IAEnB,OAAIX,KAEFF,OAAOD,KAAKY,GACXK,SAAQ,SAAUF;aAEXrB,EAAOqB,IACdrB,EAAOqB,KAAOH,EAAIG;AACnB,SAGMrB,KAGDkB;AACR;EAqCCX,OAAOiB,eAAezB,gBAAgB,kBAAkB;IAAE0B,OAAO1B;MACjEQ,OAAOiB,eAAezB,gBAAgB,cAAc;IAAE0B,OAAO1B;MAC7DQ,OAAOiB,eAAezB,gBAAgB,WAAW;IAAE0B,OAAO1B;MAC1DQ,OAAOiB,eAAezB,gBAAgB,cAAc;IAAE0B,QAAO;;;;;"}