@hichchi/utils 0.0.1-alpha.1 → 0.0.1-beta.0

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.
Files changed (103) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/README.md +6239 -1031
  3. package/package.json +1 -1
  4. package/readme-top.md +182 -6
  5. package/src/lib/constants/constants.d.ts +223 -0
  6. package/src/lib/constants/constants.js +227 -0
  7. package/src/lib/constants/constants.js.map +1 -0
  8. package/src/lib/constants/english-inflection-rules.d.ts +53 -0
  9. package/src/lib/constants/english-inflection-rules.js +360 -0
  10. package/src/lib/constants/english-inflection-rules.js.map +1 -0
  11. package/src/lib/constants/index.d.ts +2 -0
  12. package/src/lib/constants/index.js +6 -0
  13. package/src/lib/constants/index.js.map +1 -0
  14. package/src/lib/enums/index.d.ts +1 -0
  15. package/src/lib/enums/index.js +5 -0
  16. package/src/lib/enums/index.js.map +1 -0
  17. package/src/lib/enums/template-tag.enum.d.ts +33 -0
  18. package/src/lib/enums/template-tag.enum.js +39 -0
  19. package/src/lib/enums/template-tag.enum.js.map +1 -0
  20. package/src/lib/index.d.ts +3 -5
  21. package/src/lib/index.js +3 -5
  22. package/src/lib/index.js.map +1 -1
  23. package/src/lib/interfaces/index.d.ts +3 -0
  24. package/src/lib/interfaces/index.js +7 -0
  25. package/src/lib/interfaces/index.js.map +1 -0
  26. package/src/lib/interfaces/infinite-object.interface.d.ts +45 -0
  27. package/src/lib/interfaces/infinite-object.interface.js +3 -0
  28. package/src/lib/interfaces/infinite-object.interface.js.map +1 -0
  29. package/src/lib/interfaces/inflection-rule.interfaces.d.ts +142 -0
  30. package/src/lib/interfaces/inflection-rule.interfaces.js +3 -0
  31. package/src/lib/interfaces/inflection-rule.interfaces.js.map +1 -0
  32. package/src/lib/interfaces/path-value-set.interface.d.ts +79 -0
  33. package/src/lib/interfaces/path-value-set.interface.js +3 -0
  34. package/src/lib/interfaces/path-value-set.interface.js.map +1 -0
  35. package/src/lib/types/deep-partial.type.d.ts +47 -0
  36. package/src/lib/types/deep-partial.type.js +3 -0
  37. package/src/lib/types/deep-partial.type.js.map +1 -0
  38. package/src/lib/types/index.d.ts +34 -0
  39. package/src/lib/types/index.js +38 -0
  40. package/src/lib/types/index.js.map +1 -0
  41. package/src/lib/types/is-already-in-path.type.d.ts +24 -0
  42. package/src/lib/types/is-already-in-path.type.js +3 -0
  43. package/src/lib/types/is-already-in-path.type.js.map +1 -0
  44. package/src/lib/types/is-empty.type.d.ts +25 -0
  45. package/src/lib/types/is-empty.type.js +3 -0
  46. package/src/lib/types/is-empty.type.js.map +1 -0
  47. package/src/lib/types/is-primitive.type.d.ts +27 -0
  48. package/src/lib/types/is-primitive.type.js +4 -0
  49. package/src/lib/types/is-primitive.type.js.map +1 -0
  50. package/src/lib/types/literal-object.type.d.ts +49 -0
  51. package/src/lib/types/literal-object.type.js +3 -0
  52. package/src/lib/types/literal-object.type.js.map +1 -0
  53. package/src/lib/{types.d.ts → types/loose-autocomplete.type.d.ts} +18 -6
  54. package/src/lib/types/loose-autocomplete.type.js +3 -0
  55. package/src/lib/types/loose-autocomplete.type.js.map +1 -0
  56. package/src/lib/types/partial-with-null.type.d.ts +27 -0
  57. package/src/lib/types/partial-with-null.type.js +3 -0
  58. package/src/lib/types/partial-with-null.type.js.map +1 -0
  59. package/src/lib/types/prettify.type.d.ts +23 -0
  60. package/src/lib/types/prettify.type.js +3 -0
  61. package/src/lib/types/prettify.type.js.map +1 -0
  62. package/src/lib/types/type.type.d.ts +21 -0
  63. package/src/lib/{interfaces.js → types/type.type.js} +1 -1
  64. package/src/lib/types/type.type.js.map +1 -0
  65. package/src/lib/utils/assertions.utils.d.ts +150 -0
  66. package/src/lib/utils/assertions.utils.js +163 -0
  67. package/src/lib/utils/assertions.utils.js.map +1 -0
  68. package/src/lib/utils/file.utils.d.ts +87 -0
  69. package/src/lib/{file.utils.js → utils/file.utils.js} +78 -26
  70. package/src/lib/utils/file.utils.js.map +1 -0
  71. package/src/lib/utils/index.d.ts +5 -0
  72. package/src/lib/utils/index.js +9 -0
  73. package/src/lib/utils/index.js.map +1 -0
  74. package/src/lib/utils/object.utils.d.ts +912 -0
  75. package/src/lib/utils/object.utils.js +1069 -0
  76. package/src/lib/utils/object.utils.js.map +1 -0
  77. package/src/lib/utils/string-template.utils.d.ts +169 -0
  78. package/src/lib/utils/string-template.utils.js +269 -0
  79. package/src/lib/utils/string-template.utils.js.map +1 -0
  80. package/src/lib/utils/string.utils.d.ts +932 -0
  81. package/src/lib/utils/string.utils.js +1255 -0
  82. package/src/lib/utils/string.utils.js.map +1 -0
  83. package/src/lib/utils/url.utils.d.ts +101 -0
  84. package/src/lib/utils/url.utils.js +114 -0
  85. package/src/lib/utils/url.utils.js.map +1 -0
  86. package/src/lib/assertions.utils.d.ts +0 -55
  87. package/src/lib/assertions.utils.js +0 -68
  88. package/src/lib/assertions.utils.js.map +0 -1
  89. package/src/lib/file.utils.d.ts +0 -25
  90. package/src/lib/file.utils.js.map +0 -1
  91. package/src/lib/interfaces.d.ts +0 -6
  92. package/src/lib/interfaces.js.map +0 -1
  93. package/src/lib/object.utils.d.ts +0 -265
  94. package/src/lib/object.utils.js +0 -414
  95. package/src/lib/object.utils.js.map +0 -1
  96. package/src/lib/string-template.utils.d.ts +0 -25
  97. package/src/lib/string-template.utils.js +0 -40
  98. package/src/lib/string-template.utils.js.map +0 -1
  99. package/src/lib/string.utils.d.ts +0 -217
  100. package/src/lib/string.utils.js +0 -314
  101. package/src/lib/string.utils.js.map +0 -1
  102. package/src/lib/types.js +0 -4
  103. package/src/lib/types.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Generic constructor type for creating class instances.
3
+ *
4
+ * The `Type` type represents a constructor function that can create instances of a class.
5
+ * It's particularly useful when working with dependency injection systems, factories,
6
+ * or any code that needs to work with class constructors in a generic way.
7
+ *
8
+ * @template T The type of object that will be instantiated (defaults to unknown)
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * function createInstance<T>(ctor: Type<T>): T {
13
+ * return new ctor();
14
+ * }
15
+ *
16
+ * // Usage
17
+ * class MyService {}
18
+ * const instance = createInstance(MyService);
19
+ * ```
20
+ */
21
+ export type Type<T = unknown> = new (...args: unknown[]) => T;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=interfaces.js.map
3
+ //# sourceMappingURL=type.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.type.js","sourceRoot":"","sources":["../../../../../../libs/utils/src/lib/types/type.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Type-safe utility to check if a value is an array of a specific type.
3
+ *
4
+ * This function acts as a type guard that not only checks if the provided value
5
+ * is an array (using the native Array.isArray method), but also narrows the TypeScript
6
+ * type to an array of the generic type T. This enables safer handling of potentially
7
+ * array-typed values with full type inference in the conditional branches.
8
+ *
9
+ * @template T The expected element type of the array
10
+ * @param {T | T[] | undefined} value The value to check, which could be a single item,
11
+ * an array of items, or undefined
12
+ * @returns {value is T[]} Type predicate that narrows the type to T[] when true
13
+ *
14
+ * @remarks
15
+ * While this function essentially wraps Array.isArray, its value comes from the
16
+ * TypeScript type narrowing it provides, making it especially useful in code that
17
+ * needs to handle both single items and collections of items with type safety.
18
+ *
19
+ * The function properly handles undefined values by returning false, making it safe
20
+ * to use with optional parameters or potentially undefined values.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Function that can accept either a single user or multiple users
25
+ * async function createUser(userOrUsers: UserDto | UserDto[] | undefined): Promise<User | User[]> {
26
+ * // TypeScript knows userOrUsers is UserDto[] in this branch
27
+ * if (isArray<UserDto>(userOrUsers)) {
28
+ * return Promise.all(userOrUsers.map(user => userService.createUser(user)));
29
+ * }
30
+ * // TypeScript knows userOrUsers is UserDto or undefined in this branch
31
+ * else if (userOrUsers) {
32
+ * return userService.createUser(userOrUsers);
33
+ * }
34
+ * else {
35
+ * throw new BadRequestException('User data is required');
36
+ * }
37
+ * }
38
+ * ```
39
+ */
40
+ export declare function isArray<T>(value: T | T[] | undefined): value is T[];
41
+ /**
42
+ * Type-safe utility to check if a value is a non-array object of a specific type.
43
+ *
44
+ * This function serves as a type guard that checks if the provided value is an object
45
+ * (but not an array) and narrows the TypeScript type to the generic type T. It properly
46
+ * excludes null, arrays, and primitive values, focusing only on object instances.
47
+ *
48
+ * @template T The expected object type to narrow to when the check passes
49
+ * @param {T | T[] | undefined} [value] The value to check, which could be a single object,
50
+ * an array of objects, or undefined
51
+ * @returns {value is T} Type predicate that narrows the type to T when true
52
+ *
53
+ * @remarks
54
+ * This function performs three checks to ensure the value is a proper object:
55
+ * 1. It's not an array (using Array.isArray)
56
+ * 2. It's of type "object" according to JavaScript's typeof operator
57
+ * 3. It's not null (which would pass the typeof check but isn't a valid object)
58
+ *
59
+ * This is particularly useful when handling parameters that could be either an object
60
+ * or a simpler identifier (like an ID), allowing for type-safe conditional logic.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // Function that can accept either a user ID or a user object
65
+ * async function getUserInfo(userIdOrUser: number | User | undefined): Promise<UserInfo> {
66
+ * // TypeScript knows userIdOrUser is User in this branch
67
+ * if (isObject<User>(userIdOrUser)) {
68
+ * // Can safely access object properties
69
+ * return await userService.getUserInfo(userIdOrUser.id);
70
+ * }
71
+ * // TypeScript knows userIdOrUser is number or undefined in this branch
72
+ * else {
73
+ * return await userService.getUserInfo(userIdOrUser);
74
+ * }
75
+ * }
76
+ *
77
+ * // Works with optional parameters too
78
+ * function formatUserName(user?: User | string): string {
79
+ * if (isObject<User>(user)) {
80
+ * return `${user.firstName} ${user.lastName}`;
81
+ * }
82
+ * return user || 'Guest';
83
+ * }
84
+ * ```
85
+ */
86
+ export declare function isObject<T>(value?: T | T[] | undefined): value is T;
87
+ /**
88
+ * Type-safe utility to check if a value is an object with a specific property.
89
+ *
90
+ * This function acts as a type guard that determines if an unknown value is an object
91
+ * that contains a specified property, and narrows the TypeScript type to the generic
92
+ * type T when true. This provides a robust way to implement duck typing in TypeScript,
93
+ * allowing for safe property access in the conditional branches.
94
+ *
95
+ * @template T The expected object type that should contain the property
96
+ * @param {unknown} value Any value to check, with no type constraints
97
+ * @param {keyof T} propertyName The name of the property that should exist on the object
98
+ * @returns {value is T} Type predicate that narrows the type to T when true
99
+ *
100
+ * @remarks
101
+ * This function uses Object.prototype.hasOwnProperty.call to safely check for property
102
+ * existence, even if the object has a custom implementation of hasOwnProperty or if the
103
+ * property is named 'hasOwnProperty'.
104
+ *
105
+ * Unlike the simpler isObject utility, this function can distinguish between different
106
+ * object types based on their properties, making it ideal for discriminating between
107
+ * different interface implementations or handling union types.
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * // Check if an object has the properties of a User interface
112
+ * interface User {
113
+ * id: number;
114
+ * name: string;
115
+ * }
116
+ *
117
+ * interface Order {
118
+ * orderNumber: string;
119
+ * items: string[];
120
+ * }
121
+ *
122
+ * // Function that can handle different object types
123
+ * function processEntity(entity: unknown): void {
124
+ * // Check if entity has 'id' property, indicating it's a User
125
+ * if (isObjectWith<User>(entity, 'id')) {
126
+ * // TypeScript knows entity is User in this branch
127
+ * console.log(`Processing user: ${entity.name}`);
128
+ * }
129
+ * // Check if entity has 'orderNumber' property, indicating it's an Order
130
+ * else if (isObjectWith<Order>(entity, 'orderNumber')) {
131
+ * // TypeScript knows entity is Order in this branch
132
+ * console.log(`Processing order: ${entity.orderNumber} with ${entity.items.length} items`);
133
+ * }
134
+ * else {
135
+ * console.log('Unknown entity type');
136
+ * }
137
+ * }
138
+ *
139
+ * // Useful for API responses where types may vary
140
+ * async function handleResponse(response: unknown): Promise<void> {
141
+ * if (isObjectWith<ErrorResponse>(response, 'errorCode')) {
142
+ * throw new ApiException(response.errorCode, response.message);
143
+ * }
144
+ * else if (isObjectWith<SuccessResponse>(response, 'data')) {
145
+ * await processData(response.data);
146
+ * }
147
+ * }
148
+ * ```
149
+ */
150
+ export declare function isObjectWith<T extends object>(value: unknown, propertyName: keyof T): value is T;
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ // noinspection JSUnusedGlobalSymbols
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.isArray = isArray;
5
+ exports.isObject = isObject;
6
+ exports.isObjectWith = isObjectWith;
7
+ /**
8
+ * Type-safe utility to check if a value is an array of a specific type.
9
+ *
10
+ * This function acts as a type guard that not only checks if the provided value
11
+ * is an array (using the native Array.isArray method), but also narrows the TypeScript
12
+ * type to an array of the generic type T. This enables safer handling of potentially
13
+ * array-typed values with full type inference in the conditional branches.
14
+ *
15
+ * @template T The expected element type of the array
16
+ * @param {T | T[] | undefined} value The value to check, which could be a single item,
17
+ * an array of items, or undefined
18
+ * @returns {value is T[]} Type predicate that narrows the type to T[] when true
19
+ *
20
+ * @remarks
21
+ * While this function essentially wraps Array.isArray, its value comes from the
22
+ * TypeScript type narrowing it provides, making it especially useful in code that
23
+ * needs to handle both single items and collections of items with type safety.
24
+ *
25
+ * The function properly handles undefined values by returning false, making it safe
26
+ * to use with optional parameters or potentially undefined values.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Function that can accept either a single user or multiple users
31
+ * async function createUser(userOrUsers: UserDto | UserDto[] | undefined): Promise<User | User[]> {
32
+ * // TypeScript knows userOrUsers is UserDto[] in this branch
33
+ * if (isArray<UserDto>(userOrUsers)) {
34
+ * return Promise.all(userOrUsers.map(user => userService.createUser(user)));
35
+ * }
36
+ * // TypeScript knows userOrUsers is UserDto or undefined in this branch
37
+ * else if (userOrUsers) {
38
+ * return userService.createUser(userOrUsers);
39
+ * }
40
+ * else {
41
+ * throw new BadRequestException('User data is required');
42
+ * }
43
+ * }
44
+ * ```
45
+ */
46
+ function isArray(value) {
47
+ return Array.isArray(value);
48
+ }
49
+ /**
50
+ * Type-safe utility to check if a value is a non-array object of a specific type.
51
+ *
52
+ * This function serves as a type guard that checks if the provided value is an object
53
+ * (but not an array) and narrows the TypeScript type to the generic type T. It properly
54
+ * excludes null, arrays, and primitive values, focusing only on object instances.
55
+ *
56
+ * @template T The expected object type to narrow to when the check passes
57
+ * @param {T | T[] | undefined} [value] The value to check, which could be a single object,
58
+ * an array of objects, or undefined
59
+ * @returns {value is T} Type predicate that narrows the type to T when true
60
+ *
61
+ * @remarks
62
+ * This function performs three checks to ensure the value is a proper object:
63
+ * 1. It's not an array (using Array.isArray)
64
+ * 2. It's of type "object" according to JavaScript's typeof operator
65
+ * 3. It's not null (which would pass the typeof check but isn't a valid object)
66
+ *
67
+ * This is particularly useful when handling parameters that could be either an object
68
+ * or a simpler identifier (like an ID), allowing for type-safe conditional logic.
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * // Function that can accept either a user ID or a user object
73
+ * async function getUserInfo(userIdOrUser: number | User | undefined): Promise<UserInfo> {
74
+ * // TypeScript knows userIdOrUser is User in this branch
75
+ * if (isObject<User>(userIdOrUser)) {
76
+ * // Can safely access object properties
77
+ * return await userService.getUserInfo(userIdOrUser.id);
78
+ * }
79
+ * // TypeScript knows userIdOrUser is number or undefined in this branch
80
+ * else {
81
+ * return await userService.getUserInfo(userIdOrUser);
82
+ * }
83
+ * }
84
+ *
85
+ * // Works with optional parameters too
86
+ * function formatUserName(user?: User | string): string {
87
+ * if (isObject<User>(user)) {
88
+ * return `${user.firstName} ${user.lastName}`;
89
+ * }
90
+ * return user || 'Guest';
91
+ * }
92
+ * ```
93
+ */
94
+ function isObject(value) {
95
+ return !Array.isArray(value) && typeof value === "object" && value !== null;
96
+ }
97
+ /**
98
+ * Type-safe utility to check if a value is an object with a specific property.
99
+ *
100
+ * This function acts as a type guard that determines if an unknown value is an object
101
+ * that contains a specified property, and narrows the TypeScript type to the generic
102
+ * type T when true. This provides a robust way to implement duck typing in TypeScript,
103
+ * allowing for safe property access in the conditional branches.
104
+ *
105
+ * @template T The expected object type that should contain the property
106
+ * @param {unknown} value Any value to check, with no type constraints
107
+ * @param {keyof T} propertyName The name of the property that should exist on the object
108
+ * @returns {value is T} Type predicate that narrows the type to T when true
109
+ *
110
+ * @remarks
111
+ * This function uses Object.prototype.hasOwnProperty.call to safely check for property
112
+ * existence, even if the object has a custom implementation of hasOwnProperty or if the
113
+ * property is named 'hasOwnProperty'.
114
+ *
115
+ * Unlike the simpler isObject utility, this function can distinguish between different
116
+ * object types based on their properties, making it ideal for discriminating between
117
+ * different interface implementations or handling union types.
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * // Check if an object has the properties of a User interface
122
+ * interface User {
123
+ * id: number;
124
+ * name: string;
125
+ * }
126
+ *
127
+ * interface Order {
128
+ * orderNumber: string;
129
+ * items: string[];
130
+ * }
131
+ *
132
+ * // Function that can handle different object types
133
+ * function processEntity(entity: unknown): void {
134
+ * // Check if entity has 'id' property, indicating it's a User
135
+ * if (isObjectWith<User>(entity, 'id')) {
136
+ * // TypeScript knows entity is User in this branch
137
+ * console.log(`Processing user: ${entity.name}`);
138
+ * }
139
+ * // Check if entity has 'orderNumber' property, indicating it's an Order
140
+ * else if (isObjectWith<Order>(entity, 'orderNumber')) {
141
+ * // TypeScript knows entity is Order in this branch
142
+ * console.log(`Processing order: ${entity.orderNumber} with ${entity.items.length} items`);
143
+ * }
144
+ * else {
145
+ * console.log('Unknown entity type');
146
+ * }
147
+ * }
148
+ *
149
+ * // Useful for API responses where types may vary
150
+ * async function handleResponse(response: unknown): Promise<void> {
151
+ * if (isObjectWith<ErrorResponse>(response, 'errorCode')) {
152
+ * throw new ApiException(response.errorCode, response.message);
153
+ * }
154
+ * else if (isObjectWith<SuccessResponse>(response, 'data')) {
155
+ * await processData(response.data);
156
+ * }
157
+ * }
158
+ * ```
159
+ */
160
+ function isObjectWith(value, propertyName) {
161
+ return Object.prototype.hasOwnProperty.call(value, propertyName);
162
+ }
163
+ //# sourceMappingURL=assertions.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.utils.js","sourceRoot":"","sources":["../../../../../../libs/utils/src/lib/utils/assertions.utils.ts"],"names":[],"mappings":";AAAA,qCAAqC;;AAyCrC,0BAEC;AA+CD,4BAEC;AAiED,oCAEC;AA7JD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,SAAgB,OAAO,CAAI,KAA0B;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,SAAgB,QAAQ,CAAI,KAA2B;IACnD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,SAAgB,YAAY,CAAmB,KAAc,EAAE,YAAqB;IAChF,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Comprehensive mapping of file extensions to their corresponding MIME types.
3
+ *
4
+ * This map provides a bidirectional mapping between file extensions and MIME types,
5
+ * enabling applications to determine the appropriate content type for files or
6
+ * to identify the likely file extension for a given MIME type.
7
+ *
8
+ * The map includes entries for common file formats across various categories:
9
+ * - Documents (PDF, DOC, DOCX, XLS, XLSX, etc.)
10
+ * - Images (JPG, PNG, GIF, SVG, WebP, etc.)
11
+ * - Audio (MP3, WAV, OGG, etc.)
12
+ * - Video (MP4, WebM, AVI, etc.)
13
+ * - Archives (ZIP, RAR, 7Z, etc.)
14
+ * - Web resources (HTML, CSS, JS, etc.)
15
+ * - And many more specialized formats
16
+ *
17
+ * @remarks
18
+ * The map is indexed by file extension (without the dot prefix) and contains
19
+ * the corresponding MIME type as the value. Use utility functions like
20
+ * getMimeTypeFromExtension and getExtensionFromMimeType to perform lookups
21
+ * rather than accessing this map directly.
22
+ *
23
+ * Extensions are stored in lowercase to ensure case-insensitive matching.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // Get MIME type for a file extension
28
+ * const mimeType = getMimeTypeFromExtension('pdf'); // 'application/pdf'
29
+ *
30
+ * // Get file extension for a MIME type
31
+ * const extension = getExtensionFromMimeType('image/jpeg'); // 'jpg'
32
+ * ```
33
+ */
34
+ export declare const mimeTypes: Map<string, string>;
35
+ /**
36
+ * Get the file extension of the given mime type.
37
+ * @param {string} mimeType - Mime type.
38
+ * @param {Map<string, string>} [allowedMimeTypes] - Allowed mime types. If not provided, the default mime types map will be used.
39
+ * @returns {string | undefined} File extension or undefined if the mime type is not found.
40
+ *
41
+ * @example
42
+ * ```TypeScript
43
+ * // Using the default mime types map
44
+ * const extension = getFileExt('application/pdf');
45
+ * // Output: 'pdf'
46
+ * ```
47
+ *
48
+ * @example
49
+ * ```TypeScript
50
+ * // Using a custom mime types map
51
+ * const customMimeTypes = new Map([
52
+ * ['jpg', 'image/jpeg'],
53
+ * ['png', 'image/png']
54
+ * ]);
55
+ * const extension = getFileExt('image/jpeg', customMimeTypes);
56
+ * // Output: 'jpg'
57
+ * ```
58
+ */
59
+ export declare const getFileExt: (mimeType: string, allowedMimeTypes?: Map<string, string>) => string | undefined;
60
+ /**
61
+ * Get file size in human-readable format.
62
+ * @param {number} size - File size in bytes.
63
+ * @param {boolean} [round] - Whether to round the size to whole numbers. If true, decimals will be removed.
64
+ * @returns {string} File size in human-readable format (B, KB, MB, or GB).
65
+ *
66
+ * @example
67
+ * ```TypeScript
68
+ * // Get file size with decimals
69
+ * const readableSize = getFileSize(1536);
70
+ * // Output: '1.50 KB'
71
+ * ```
72
+ *
73
+ * @example
74
+ * ```TypeScript
75
+ * // Get rounded file size
76
+ * const roundedSize = getFileSize(1536, true);
77
+ * // Output: '2 KB'
78
+ * ```
79
+ *
80
+ * @example
81
+ * ```TypeScript
82
+ * // Get size for larger files
83
+ * const largeFileSize = getFileSize(1073741824);
84
+ * // Output: '1.00 GB'
85
+ * ```
86
+ */
87
+ export declare const getFileSize: (size: number, round?: boolean) => string;
@@ -1,10 +1,40 @@
1
1
  "use strict";
2
2
  // noinspection JSUnusedGlobalSymbols
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.saveAsFile = exports.getFileSize = exports.getFileExt = exports.mimeTypes = void 0;
4
+ exports.getFileSize = exports.getFileExt = exports.mimeTypes = void 0;
5
5
  const object_utils_1 = require("./object.utils");
6
6
  /**
7
- * Map of mime types to all file extensions.
7
+ * Comprehensive mapping of file extensions to their corresponding MIME types.
8
+ *
9
+ * This map provides a bidirectional mapping between file extensions and MIME types,
10
+ * enabling applications to determine the appropriate content type for files or
11
+ * to identify the likely file extension for a given MIME type.
12
+ *
13
+ * The map includes entries for common file formats across various categories:
14
+ * - Documents (PDF, DOC, DOCX, XLS, XLSX, etc.)
15
+ * - Images (JPG, PNG, GIF, SVG, WebP, etc.)
16
+ * - Audio (MP3, WAV, OGG, etc.)
17
+ * - Video (MP4, WebM, AVI, etc.)
18
+ * - Archives (ZIP, RAR, 7Z, etc.)
19
+ * - Web resources (HTML, CSS, JS, etc.)
20
+ * - And many more specialized formats
21
+ *
22
+ * @remarks
23
+ * The map is indexed by file extension (without the dot prefix) and contains
24
+ * the corresponding MIME type as the value. Use utility functions like
25
+ * getMimeTypeFromExtension and getExtensionFromMimeType to perform lookups
26
+ * rather than accessing this map directly.
27
+ *
28
+ * Extensions are stored in lowercase to ensure case-insensitive matching.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * // Get MIME type for a file extension
33
+ * const mimeType = getMimeTypeFromExtension('pdf'); // 'application/pdf'
34
+ *
35
+ * // Get file extension for a MIME type
36
+ * const extension = getExtensionFromMimeType('image/jpeg'); // 'jpg'
37
+ * ```
8
38
  */
9
39
  exports.mimeTypes = new Map([
10
40
  ["123", "application/vnd.lotus-1-2-3"],
@@ -1210,19 +1240,58 @@ exports.mimeTypes = new Map([
1210
1240
  ]);
1211
1241
  /**
1212
1242
  * Get the file extension of the given mime type.
1213
- * @param mimeType - Mime type.
1214
- * @param allowedMimeTypes - Allowed mime types.
1215
- * @returns File extension.
1243
+ * @param {string} mimeType - Mime type.
1244
+ * @param {Map<string, string>} [allowedMimeTypes] - Allowed mime types. If not provided, the default mime types map will be used.
1245
+ * @returns {string | undefined} File extension or undefined if the mime type is not found.
1246
+ *
1247
+ * @example
1248
+ * ```TypeScript
1249
+ * // Using the default mime types map
1250
+ * const extension = getFileExt('application/pdf');
1251
+ * // Output: 'pdf'
1252
+ * ```
1253
+ *
1254
+ * @example
1255
+ * ```TypeScript
1256
+ * // Using a custom mime types map
1257
+ * const customMimeTypes = new Map([
1258
+ * ['jpg', 'image/jpeg'],
1259
+ * ['png', 'image/png']
1260
+ * ]);
1261
+ * const extension = getFileExt('image/jpeg', customMimeTypes);
1262
+ * // Output: 'jpg'
1263
+ * ```
1216
1264
  */
1217
1265
  const getFileExt = (mimeType, allowedMimeTypes) => {
1218
- return (0, object_utils_1.getMapKey)(allowedMimeTypes !== null && allowedMimeTypes !== void 0 ? allowedMimeTypes : exports.mimeTypes, mimeType);
1266
+ return (0, object_utils_1.getMapKey)(allowedMimeTypes ?? exports.mimeTypes, mimeType);
1219
1267
  };
1220
1268
  exports.getFileExt = getFileExt;
1221
1269
  /**
1222
1270
  * Get file size in human-readable format.
1223
- * @param size - File size in bytes.
1224
- * @param round - Whether to round the size.
1225
- * @returns File size in human-readable format.
1271
+ * @param {number} size - File size in bytes.
1272
+ * @param {boolean} [round] - Whether to round the size to whole numbers. If true, decimals will be removed.
1273
+ * @returns {string} File size in human-readable format (B, KB, MB, or GB).
1274
+ *
1275
+ * @example
1276
+ * ```TypeScript
1277
+ * // Get file size with decimals
1278
+ * const readableSize = getFileSize(1536);
1279
+ * // Output: '1.50 KB'
1280
+ * ```
1281
+ *
1282
+ * @example
1283
+ * ```TypeScript
1284
+ * // Get rounded file size
1285
+ * const roundedSize = getFileSize(1536, true);
1286
+ * // Output: '2 KB'
1287
+ * ```
1288
+ *
1289
+ * @example
1290
+ * ```TypeScript
1291
+ * // Get size for larger files
1292
+ * const largeFileSize = getFileSize(1073741824);
1293
+ * // Output: '1.00 GB'
1294
+ * ```
1226
1295
  */
1227
1296
  const getFileSize = (size, round) => {
1228
1297
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
@@ -1243,21 +1312,4 @@ const getFileSize = (size, round) => {
1243
1312
  return `${(size / 1024 / 1024 / 1024).toFixed(round ? 0 : 2)} GB`;
1244
1313
  };
1245
1314
  exports.getFileSize = getFileSize;
1246
- /**
1247
- * Save a StreamableBlob as a file.
1248
- * @param blob - Blob to save.
1249
- * @param filename - File name.
1250
- * @throws {Error} - Throws an error if used in a Node.js environment.
1251
- */
1252
- const saveAsFile = (blob, filename) => {
1253
- if (typeof window === "undefined" || typeof document === "undefined") {
1254
- throw new Error("saveAsFile should be used only in the browser environment.");
1255
- }
1256
- const downloadURL = window.URL.createObjectURL(blob);
1257
- const link = document.createElement("a");
1258
- link.href = downloadURL;
1259
- link.download = filename;
1260
- link.click();
1261
- };
1262
- exports.saveAsFile = saveAsFile;
1263
1315
  //# sourceMappingURL=file.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.utils.js","sourceRoot":"","sources":["../../../../../../libs/utils/src/lib/utils/file.utils.ts"],"names":[],"mappings":"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"}