@ts-type/object-freeze 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.0.6](https://github.com/bluelovers/ws-ts-type/compare/@ts-type/object-freeze@1.0.5...@ts-type/object-freeze@1.0.6) (2026-03-07)
7
+
8
+ **Note:** Version bump only for package @ts-type/object-freeze
9
+
10
+
11
+
12
+
13
+
14
+ ## [1.0.5](https://github.com/bluelovers/ws-ts-type/compare/@ts-type/object-freeze@1.0.4...@ts-type/object-freeze@1.0.5) (2026-03-07)
15
+
16
+
17
+
18
+ ### 📚 Documentation
19
+
20
+ * enhance documentation and JSDoc comments across multiple packages ([88ee99b](https://github.com/bluelovers/ws-ts-type/commit/88ee99b3a489645ca53093357cc3523dbe7996e0))
21
+
22
+
23
+ ### 🛠 Build System
24
+
25
+ * 更新多個套件的 test 指令為 jest ([61ea53b](https://github.com/bluelovers/ws-ts-type/commit/61ea53bf15fc3ed0e216793200604ae5a52079c9))
26
+
27
+
28
+ ### ♻️ Chores
29
+
30
+ * migrate from yarn to pnpm and enhance test infrastructure ([8a5daa2](https://github.com/bluelovers/ws-ts-type/commit/8a5daa2f2022eaf025c3349d4fe5dc8971f8c077))
31
+
32
+
33
+
6
34
  ## [1.0.4](https://github.com/bluelovers/ws-ts-type/compare/@ts-type/object-freeze@1.0.3...@ts-type/object-freeze@1.0.4) (2022-10-10)
7
35
 
8
36
 
package/README.md CHANGED
@@ -1,8 +1,19 @@
1
- # README.md
1
+ # @ts-type/object-freeze
2
2
 
3
-
3
+ Object.freeze 的類型安全包裝,提供精確的唯讀類型
4
4
 
5
- ## install
5
+ Type-safe wrapper for Object.freeze with precise readonly types
6
+
7
+ ## 功能特點 / Features
8
+
9
+ - 凍結陣列並回傳唯讀類型
10
+ - Freeze array and return readonly type
11
+ - 凍結物件並回傳唯讀類型
12
+ - Freeze object and return readonly type
13
+ - 支援函式、陣列、元組等多種類型
14
+ - Support function, array, tuple and more types
15
+
16
+ ## 安裝 / Install
6
17
 
7
18
  ```bash
8
19
  yarn add @ts-type/object-freeze
@@ -10,3 +21,19 @@ yarn-tool add @ts-type/object-freeze
10
21
  yt add @ts-type/object-freeze
11
22
  ```
12
23
 
24
+ ## 使用範例 / Usage Example
25
+
26
+ ```typescript
27
+ import { freezeArray, freezeObject } from '@ts-type/object-freeze';
28
+
29
+ // 凍結陣列
30
+ const arr = [1, 2, 3];
31
+ const frozenArr = freezeArray(arr);
32
+ // TypeScript 知道 frozenArr 是唯讀陣列
33
+
34
+ // 凍結物件
35
+ const obj = { name: 'John', age: 30 };
36
+ const frozenObj = freezeObject(obj);
37
+ // TypeScript 知道 frozenObj 是 Readonly<{name: string, age: number}>
38
+ ```
39
+
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
 
2
2
  'use strict'
3
3
 
4
- if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') {
5
- module.exports = require('./index.cjs.production.min.cjs')
6
- } else {
4
+ if (typeof process !== 'undefined' && process.env.NODE_ENV !== 'production') {
7
5
  module.exports = require('./index.cjs.development.cjs')
6
+ } else {
7
+ module.exports = require('./index.cjs.production.min.cjs')
8
8
  }
@@ -5,11 +5,21 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  function freezeArray(obj) {
6
6
  return Object.freeze(obj);
7
7
  }
8
+ /**
9
+ * 凍結物件並回傳唯讀類型(通用實現)
10
+ * Freeze object and return readonly type (generic implementation)
11
+ *
12
+ * 使用 Object.freeze 凍結物件,使其不可變
13
+ * Uses Object.freeze to freeze the object to make it immutable
14
+ *
15
+ * @param obj - 要凍結的物件 / Object to freeze
16
+ * @returns 凍結後的物件 / Frozen object
17
+ */
8
18
  function freezeObject(obj) {
9
19
  return Object.freeze(obj);
10
20
  }
11
21
 
12
- exports["default"] = freezeObject;
22
+ exports.default = freezeObject;
13
23
  exports.freezeArray = freezeArray;
14
24
  exports.freezeObject = freezeObject;
15
25
  //# sourceMappingURL=index.cjs.development.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.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\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\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":["obj"],"mappings":";;;;;;;qBAuBA,CAA2BA,GAA3B,EAA2B;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.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":[],"mappings":";;;;;;AAsEA,CAAA;;AAAA;;AAKA;;;;;;;;;;;;;;;"}
@@ -1,2 +1,12 @@
1
- "use strict";function freezeObject(e){return Object.freeze(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=freezeObject,exports.freezeArray=function freezeArray(e){return Object.freeze(e)},exports.freezeObject=freezeObject;
1
+ "use strict";
2
+
3
+ function freezeObject(e) {
4
+ return Object.freeze(e);
5
+ }
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: !0
9
+ }), exports.default = freezeObject, exports.freezeArray = function freezeArray(e) {
10
+ return Object.freeze(e);
11
+ }, exports.freezeObject = freezeObject;
2
12
  //# sourceMappingURL=index.cjs.production.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.production.min.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\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\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":["obj"],"mappings":"mCAuB2BA"}
1
+ {"version":3,"file":"index.cjs.production.min.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":[],"mappings":";;;;;;;;;;AAsEA"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,55 @@
1
1
  import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';
2
2
  import { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';
3
3
  import { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';
4
+ /**
5
+ * 凍結陣列並回傳唯讀類型
6
+ * Freeze array and return readonly type
7
+ *
8
+ * @param obj - 要凍結的陣列 / Array to freeze
9
+ * @returns 唯讀陣列類型 / Readonly array type
10
+ */
4
11
  export declare function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>;
5
12
  export declare function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>;
13
+ /**
14
+ * 凍結物件並回傳唯讀類型(空元組版本)
15
+ * Freeze object and return readonly type (empty tuple version)
16
+ *
17
+ * @param obj - 要凍結的物件 / Object to freeze
18
+ * @returns 唯讀物件類型 / Readonly object type
19
+ */
6
20
  export declare function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>;
21
+ /**
22
+ * 凍結物件並回傳唯讀類型(陣列版本)
23
+ * Freeze object and return readonly type (array version)
24
+ *
25
+ * @param obj - 要凍結的物件 / Object to freeze
26
+ * @returns 唯讀陣列類型 / Readonly array type
27
+ */
7
28
  export declare function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>;
29
+ /**
30
+ * 凍結函式並保持原類型
31
+ * Freeze function and preserve original type
32
+ *
33
+ * @param f - 要凍結的函式 / Function to freeze
34
+ * @returns 凍結後的函式 / Frozen function
35
+ */
8
36
  export declare function freezeObject<T extends Function>(f: T): T;
37
+ /**
38
+ * 凍結物件並回傳唯讀類型(鍵值物件版本)
39
+ * Freeze object and return readonly type (key-value object version)
40
+ *
41
+ * @param o - 要凍結的物件 / Object to freeze
42
+ * @returns 唯讀物件類型 / Readonly object type
43
+ */
9
44
  export declare function freezeObject<T extends {
10
45
  [idx: string]: U | null | undefined | object;
11
46
  }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>;
47
+ /**
48
+ * 凍結物件並回傳唯讀類型(通用版本)
49
+ * Freeze object and return readonly type (generic version)
50
+ *
51
+ * @param o - 要凍結的物件 / Object to freeze
52
+ * @returns 唯讀物件類型 / Readonly object type
53
+ */
12
54
  export declare function freezeObject<T>(o: T): Readonly<T>;
13
55
  export default freezeObject;
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.mjs","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\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\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":["obj"],"mappings":";;;;sBAuB2BA;;;;"}
1
+ {"version":3,"file":"index.esm.mjs","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":[],"mappings":";;AAsEA;;;;;;"}
@@ -7,11 +7,21 @@
7
7
  function freezeArray(obj) {
8
8
  return Object.freeze(obj);
9
9
  }
10
+ /**
11
+ * 凍結物件並回傳唯讀類型(通用實現)
12
+ * Freeze object and return readonly type (generic implementation)
13
+ *
14
+ * 使用 Object.freeze 凍結物件,使其不可變
15
+ * Uses Object.freeze to freeze the object to make it immutable
16
+ *
17
+ * @param obj - 要凍結的物件 / Object to freeze
18
+ * @returns 凍結後的物件 / Frozen object
19
+ */
10
20
  function freezeObject(obj) {
11
21
  return Object.freeze(obj);
12
22
  }
13
23
 
14
- exports["default"] = freezeObject;
24
+ exports.default = freezeObject;
15
25
  exports.freezeArray = freezeArray;
16
26
  exports.freezeObject = freezeObject;
17
27
 
@@ -1 +1 @@
1
- {"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\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\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":["obj"],"mappings":";;;;;;;;;sBAuBA,CAA2BA,GAA3B,EAA2B;;;;;;;;;;;;;;"}
1
+ {"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":[],"mappings":";;;;;;;;CAsEA,CAAA;;CAAA;;CAKA;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,14 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TsTypeObjectFreeze={})}(this,(function(e){"use strict";function freezeObject(e){return Object.freeze(e)}e.default=freezeObject,e.freezeArray=function freezeArray(e){return Object.freeze(e)},e.freezeObject=freezeObject,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e, t) {
2
+ "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define([ "exports" ], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).TsTypeObjectFreeze = {});
3
+ }(this, function(e) {
4
+ "use strict";
5
+ function freezeObject(e) {
6
+ return Object.freeze(e);
7
+ }
8
+ e.default = freezeObject, e.freezeArray = function freezeArray(e) {
9
+ return Object.freeze(e);
10
+ }, e.freezeObject = freezeObject, Object.defineProperty(e, "__esModule", {
11
+ value: !0
12
+ });
13
+ });
2
14
  //# sourceMappingURL=index.umd.production.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.production.min.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\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\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":["obj"],"mappings":"gRAuB2BA"}
1
+ {"version":3,"file":"index.umd.production.min.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":[],"mappings":";;;;;;;;;AAsEA;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ts-type/object-freeze",
3
- "version": "1.0.4",
4
- "description": "better typescript type for Object.freeze",
3
+ "version": "1.0.6",
4
+ "description": "Object.freeze 的類型安全包裝,提供精確的唯讀類型 | Type-safe wrapper for Object.freeze with precise readonly types",
5
5
  "keywords": [
6
6
  ".d.ts",
7
7
  "@types",
@@ -44,8 +44,8 @@
44
44
  "exports": {
45
45
  ".": {
46
46
  "types": "./dist/index.d.ts",
47
- "import": "./dist/index.esm.mjs",
48
- "require": "./dist/index.cjs"
47
+ "require": "./dist/index.cjs",
48
+ "import": "./dist/index.esm.mjs"
49
49
  },
50
50
  "./package.json": "./package.json",
51
51
  "./src/*": "./src/*"
@@ -63,13 +63,14 @@
63
63
  "lint": "yarn run lint:eslint",
64
64
  "lint:eslint": "ynpx eslint --ext .ts,.tsx,.mts,.cts ./",
65
65
  "pretest": "echo pretest",
66
- "test": "echo \"Error: no test specified\"",
66
+ "test": "jest --passWithNoTests",
67
67
  "test:jest": "jest --passWithNoTests",
68
+ "test:jest:coverage": "node --run test:jest -- --coverage",
68
69
  "test:jest:snapshot": "yarn run test:jest -- -u",
69
70
  "test:mocha": "ynpx --quiet -p ts-node -p mocha mocha -- --require ts-node/register \"!(node_modules)/**/*.{test,spec}.{ts,tsx}\"",
70
71
  "test:snapshot": "yarn run test -- -u",
71
72
  "test:tsd": "ynpx tsd",
72
- "test:tsdx": "ynpx @bluelovers/tsdx test --passWithNoTests",
73
+ "test:tsdx": "tsdx test --passWithNoTests",
73
74
  "posttest": "yarn run build",
74
75
  "build": "yarn run build:tsdx && yarn run build:dts:tsc",
75
76
  "build:dts:bundle": "ynpx dts-bundle-generator -o ./dist/index.d.ts ./src/index.ts --no-banner --inline-declare-global & echo build:dts:bundle",
@@ -77,7 +78,7 @@
77
78
  "build:dts:tsc": "yarn run build:dts:tsc:emit && yarn run build:dts:copy",
78
79
  "build:dts:tsc:emit": "tsc --emitDeclarationOnly --declaration --noEmit false",
79
80
  "build:microbundle": "ynpx microbundle --target node",
80
- "build:tsdx": "ynpx @bluelovers/tsdx build --target node --name index",
81
+ "build:tsdx": "tsdx build --target node --name index",
81
82
  "ci:install": "echo ci:install",
82
83
  "ci:build": "echo ci:build",
83
84
  "preversion": "echo preversion && yarn run test",
@@ -98,11 +99,10 @@
98
99
  "tsc:showConfig": "ynpx get-current-tsconfig -p"
99
100
  },
100
101
  "dependencies": {
101
- "ts-type": "^3.0.1"
102
+ "ts-type": "^3.0.3"
102
103
  },
103
- "packageManager": "yarn@^1.22.11",
104
104
  "publishConfig": {
105
105
  "access": "public"
106
106
  },
107
- "gitHead": "fa34eea119b9bcbb363061ddffcfe9d78c2d0ddd"
107
+ "gitHead": "4ef633a04245358fed59633c9d9ceff0607d30d3"
108
108
  }
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAMA,SAAgB,WAAW,CAA+C,GAAM;IAE/E,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAHD,kCAGC;AASD,SAAgB,YAAY,CAA+C,GAAM;IAEhF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAHD,oCAGC;AAED,kBAAe,YAAY,CAAA","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\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\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAaA,kCAGC;AAsDD,oCAGC;AA5DD,SAAgB,WAAW,CAA+C,GAAM;IAE/E,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AA4CD;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAA+C,GAAM;IAEhF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAED,kBAAe,YAAY,CAAA","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"]}
package/src/index.ts CHANGED
@@ -2,6 +2,13 @@ import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';
2
2
  import { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';
3
3
  import { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';
4
4
 
5
+ /**
6
+ * 凍結陣列並回傳唯讀類型
7
+ * Freeze array and return readonly type
8
+ *
9
+ * @param obj - 要凍結的陣列 / Array to freeze
10
+ * @returns 唯讀陣列類型 / Readonly array type
11
+ */
5
12
  export function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>
6
13
  export function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>
7
14
  export function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)
@@ -9,13 +16,58 @@ export function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T
9
16
  return Object.freeze(obj)
10
17
  }
11
18
 
19
+ /**
20
+ * 凍結物件並回傳唯讀類型(空元組版本)
21
+ * Freeze object and return readonly type (empty tuple version)
22
+ *
23
+ * @param obj - 要凍結的物件 / Object to freeze
24
+ * @returns 唯讀物件類型 / Readonly object type
25
+ */
12
26
  export function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>
27
+ /**
28
+ * 凍結物件並回傳唯讀類型(陣列版本)
29
+ * Freeze object and return readonly type (array version)
30
+ *
31
+ * @param obj - 要凍結的物件 / Object to freeze
32
+ * @returns 唯讀陣列類型 / Readonly array type
33
+ */
13
34
  export function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>
14
35
 
36
+ /**
37
+ * 凍結函式並保持原類型
38
+ * Freeze function and preserve original type
39
+ *
40
+ * @param f - 要凍結的函式 / Function to freeze
41
+ * @returns 凍結後的函式 / Frozen function
42
+ */
15
43
  export function freezeObject<T extends Function>(f: T): T
44
+ /**
45
+ * 凍結物件並回傳唯讀類型(鍵值物件版本)
46
+ * Freeze object and return readonly type (key-value object version)
47
+ *
48
+ * @param o - 要凍結的物件 / Object to freeze
49
+ * @returns 唯讀物件類型 / Readonly object type
50
+ */
16
51
  export function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>
52
+ /**
53
+ * 凍結物件並回傳唯讀類型(通用版本)
54
+ * Freeze object and return readonly type (generic version)
55
+ *
56
+ * @param o - 要凍結的物件 / Object to freeze
57
+ * @returns 唯讀物件類型 / Readonly object type
58
+ */
17
59
  export function freezeObject<T>(o: T): Readonly<T>
18
60
 
61
+ /**
62
+ * 凍結物件並回傳唯讀類型(通用實現)
63
+ * Freeze object and return readonly type (generic implementation)
64
+ *
65
+ * 使用 Object.freeze 凍結物件,使其不可變
66
+ * Uses Object.freeze to freeze the object to make it immutable
67
+ *
68
+ * @param obj - 要凍結的物件 / Object to freeze
69
+ * @returns 凍結後的物件 / Frozen object
70
+ */
19
71
  export function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)
20
72
  {
21
73
  return Object.freeze(obj)