@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.
- package/CHANGELOG.md +5 -1
- package/README.md +6239 -1031
- package/package.json +1 -1
- package/readme-top.md +182 -6
- package/src/lib/constants/constants.d.ts +223 -0
- package/src/lib/constants/constants.js +227 -0
- package/src/lib/constants/constants.js.map +1 -0
- package/src/lib/constants/english-inflection-rules.d.ts +53 -0
- package/src/lib/constants/english-inflection-rules.js +360 -0
- package/src/lib/constants/english-inflection-rules.js.map +1 -0
- package/src/lib/constants/index.d.ts +2 -0
- package/src/lib/constants/index.js +6 -0
- package/src/lib/constants/index.js.map +1 -0
- package/src/lib/enums/index.d.ts +1 -0
- package/src/lib/enums/index.js +5 -0
- package/src/lib/enums/index.js.map +1 -0
- package/src/lib/enums/template-tag.enum.d.ts +33 -0
- package/src/lib/enums/template-tag.enum.js +39 -0
- package/src/lib/enums/template-tag.enum.js.map +1 -0
- package/src/lib/index.d.ts +3 -5
- package/src/lib/index.js +3 -5
- package/src/lib/index.js.map +1 -1
- package/src/lib/interfaces/index.d.ts +3 -0
- package/src/lib/interfaces/index.js +7 -0
- package/src/lib/interfaces/index.js.map +1 -0
- package/src/lib/interfaces/infinite-object.interface.d.ts +45 -0
- package/src/lib/interfaces/infinite-object.interface.js +3 -0
- package/src/lib/interfaces/infinite-object.interface.js.map +1 -0
- package/src/lib/interfaces/inflection-rule.interfaces.d.ts +142 -0
- package/src/lib/interfaces/inflection-rule.interfaces.js +3 -0
- package/src/lib/interfaces/inflection-rule.interfaces.js.map +1 -0
- package/src/lib/interfaces/path-value-set.interface.d.ts +79 -0
- package/src/lib/interfaces/path-value-set.interface.js +3 -0
- package/src/lib/interfaces/path-value-set.interface.js.map +1 -0
- package/src/lib/types/deep-partial.type.d.ts +47 -0
- package/src/lib/types/deep-partial.type.js +3 -0
- package/src/lib/types/deep-partial.type.js.map +1 -0
- package/src/lib/types/index.d.ts +34 -0
- package/src/lib/types/index.js +38 -0
- package/src/lib/types/index.js.map +1 -0
- package/src/lib/types/is-already-in-path.type.d.ts +24 -0
- package/src/lib/types/is-already-in-path.type.js +3 -0
- package/src/lib/types/is-already-in-path.type.js.map +1 -0
- package/src/lib/types/is-empty.type.d.ts +25 -0
- package/src/lib/types/is-empty.type.js +3 -0
- package/src/lib/types/is-empty.type.js.map +1 -0
- package/src/lib/types/is-primitive.type.d.ts +27 -0
- package/src/lib/types/is-primitive.type.js +4 -0
- package/src/lib/types/is-primitive.type.js.map +1 -0
- package/src/lib/types/literal-object.type.d.ts +49 -0
- package/src/lib/types/literal-object.type.js +3 -0
- package/src/lib/types/literal-object.type.js.map +1 -0
- package/src/lib/{types.d.ts → types/loose-autocomplete.type.d.ts} +18 -6
- package/src/lib/types/loose-autocomplete.type.js +3 -0
- package/src/lib/types/loose-autocomplete.type.js.map +1 -0
- package/src/lib/types/partial-with-null.type.d.ts +27 -0
- package/src/lib/types/partial-with-null.type.js +3 -0
- package/src/lib/types/partial-with-null.type.js.map +1 -0
- package/src/lib/types/prettify.type.d.ts +23 -0
- package/src/lib/types/prettify.type.js +3 -0
- package/src/lib/types/prettify.type.js.map +1 -0
- package/src/lib/types/type.type.d.ts +21 -0
- package/src/lib/{interfaces.js → types/type.type.js} +1 -1
- package/src/lib/types/type.type.js.map +1 -0
- package/src/lib/utils/assertions.utils.d.ts +150 -0
- package/src/lib/utils/assertions.utils.js +163 -0
- package/src/lib/utils/assertions.utils.js.map +1 -0
- package/src/lib/utils/file.utils.d.ts +87 -0
- package/src/lib/{file.utils.js → utils/file.utils.js} +78 -26
- package/src/lib/utils/file.utils.js.map +1 -0
- package/src/lib/utils/index.d.ts +5 -0
- package/src/lib/utils/index.js +9 -0
- package/src/lib/utils/index.js.map +1 -0
- package/src/lib/utils/object.utils.d.ts +912 -0
- package/src/lib/utils/object.utils.js +1069 -0
- package/src/lib/utils/object.utils.js.map +1 -0
- package/src/lib/utils/string-template.utils.d.ts +169 -0
- package/src/lib/utils/string-template.utils.js +269 -0
- package/src/lib/utils/string-template.utils.js.map +1 -0
- package/src/lib/utils/string.utils.d.ts +932 -0
- package/src/lib/utils/string.utils.js +1255 -0
- package/src/lib/utils/string.utils.js.map +1 -0
- package/src/lib/utils/url.utils.d.ts +101 -0
- package/src/lib/utils/url.utils.js +114 -0
- package/src/lib/utils/url.utils.js.map +1 -0
- package/src/lib/assertions.utils.d.ts +0 -55
- package/src/lib/assertions.utils.js +0 -68
- package/src/lib/assertions.utils.js.map +0 -1
- package/src/lib/file.utils.d.ts +0 -25
- package/src/lib/file.utils.js.map +0 -1
- package/src/lib/interfaces.d.ts +0 -6
- package/src/lib/interfaces.js.map +0 -1
- package/src/lib/object.utils.d.ts +0 -265
- package/src/lib/object.utils.js +0 -414
- package/src/lib/object.utils.js.map +0 -1
- package/src/lib/string-template.utils.d.ts +0 -25
- package/src/lib/string-template.utils.js +0 -40
- package/src/lib/string-template.utils.js.map +0 -1
- package/src/lib/string.utils.d.ts +0 -217
- package/src/lib/string.utils.js +0 -314
- package/src/lib/string.utils.js.map +0 -1
- package/src/lib/types.js +0 -4
- 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;
|
|
@@ -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.
|
|
4
|
+
exports.getFileSize = exports.getFileExt = exports.mimeTypes = void 0;
|
|
5
5
|
const object_utils_1 = require("./object.utils");
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
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
|
|
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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"}
|