{"version":3,"file":"index.umd.development.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\n/**\n * 凍結陣列並回傳唯讀類型\n * Freeze array and return readonly type\n *\n * @param obj - 要凍結的陣列 / Array to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\n/**\n * 凍結物件並回傳唯讀類型（空元組版本）\n * Freeze object and return readonly type (empty tuple version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\n/**\n * 凍結物件並回傳唯讀類型（陣列版本）\n * Freeze object and return readonly type (array version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\n/**\n * 凍結函式並保持原類型\n * Freeze function and preserve original type\n *\n * @param f - 要凍結的函式 / Function to freeze\n * @returns 凍結後的函式 / Frozen function\n */\nexport function freezeObject<T extends Function>(f: T): T\n/**\n * 凍結物件並回傳唯讀類型（鍵值物件版本）\n * Freeze object and return readonly type (key-value object version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\n/**\n * 凍結物件並回傳唯讀類型（通用版本）\n * Freeze object and return readonly type (generic version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T>(o: T): Readonly<T>\n\n/**\n * 凍結物件並回傳唯讀類型（通用實現）\n * Freeze object and return readonly type (generic implementation)\n *\n * 使用 Object.freeze 凍結物件，使其不可變\n * Uses Object.freeze to freeze the object to make it immutable\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 凍結後的物件 / Frozen object\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":["freezeArray","obj","Object","freeze","freezeObject"],"mappings":";;;;;;CAaM,SAAUA,WAAWA,CAA+CC,GAAM,EAAA;CAE/E,EAAA,OAAOC,MAAM,CAACC,MAAM,CAACF,GAAG,CAAC,CAAA;CAC1B,CAAA;CA4CA;;;;;;;;;CASG;CACG,SAAUG,YAAYA,CAA+CH,GAAM,EAAA;CAEhF,EAAA,OAAOC,MAAM,CAACC,MAAM,CAACF,GAAG,CAAC,CAAA;CAC1B;;;;;;;;;;;;"}