@lucasbernardosn/ts-utils 0.0.0-stage → 0.3.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/LICENSE +21 -0
- package/README.md +52 -2
- package/dist/dev/index.d.ts +2 -0
- package/dist/dev/index.js +2 -0
- package/dist/dev/sleep.d.ts +32 -0
- package/dist/dev/sleep.js +42 -0
- package/dist/dev/sleep.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +9 -0
- package/dist/types/any.d.ts +33 -0
- package/dist/types/any.js +0 -0
- package/dist/types/array.d.ts +33 -0
- package/dist/types/array.js +0 -0
- package/dist/types/deep-keys-flat.d.ts +36 -0
- package/dist/types/deep-keys-flat.js +0 -0
- package/dist/types/deep-keys.d.ts +57 -0
- package/dist/types/deep-keys.js +0 -0
- package/dist/types/deep-partial.d.ts +39 -0
- package/dist/types/deep-partial.js +0 -0
- package/dist/types/deep-readonly.d.ts +39 -0
- package/dist/types/deep-readonly.js +0 -0
- package/dist/types/deep-value.d.ts +32 -0
- package/dist/types/deep-value.js +0 -0
- package/dist/types/ensure-string.d.ts +19 -0
- package/dist/types/ensure-string.js +0 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/index.js +0 -0
- package/dist/types/keys-of-type.d.ts +26 -0
- package/dist/types/keys-of-type.js +0 -0
- package/dist/types/merge-override.d.ts +34 -0
- package/dist/types/merge-override.js +0 -0
- package/dist/types/nullish.d.ts +25 -0
- package/dist/types/nullish.js +0 -0
- package/dist/types/omit-by-value.d.ts +31 -0
- package/dist/types/omit-by-value.js +0 -0
- package/dist/types/optional.d.ts +29 -0
- package/dist/types/optional.js +0 -0
- package/dist/types/pick-by-value.d.ts +30 -0
- package/dist/types/pick-by-value.js +0 -0
- package/dist/types/recompose.d.ts +26 -0
- package/dist/types/recompose.js +0 -0
- package/dist/types/required-except.d.ts +31 -0
- package/dist/types/required-except.js +0 -0
- package/dist/types/serializable-value.d.ts +23 -0
- package/dist/types/serializable-value.js +0 -0
- package/dist/types/strict-empty-object.d.ts +12 -0
- package/dist/types/strict-empty-object.js +0 -0
- package/dist/types/unknown.d.ts +33 -0
- package/dist/types/unknown.js +0 -0
- package/dist/types/value-of.d.ts +20 -0
- package/dist/types/value-of.js +0 -0
- package/dist/utils/compose-event-handlers.d.ts +18 -0
- package/dist/utils/compose-event-handlers.js +22 -0
- package/dist/utils/compose-event-handlers.js.map +1 -0
- package/dist/utils/create-split-props.d.ts +38 -0
- package/dist/utils/create-split-props.js +36 -0
- package/dist/utils/create-split-props.js.map +1 -0
- package/dist/utils/get-initials.d.ts +15 -0
- package/dist/utils/get-initials.js +21 -0
- package/dist/utils/get-initials.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/is-deep-equal.d.ts +24 -0
- package/dist/utils/is-deep-equal.js +110 -0
- package/dist/utils/is-deep-equal.js.map +1 -0
- package/dist/utils/is-not-nullish.d.ts +14 -0
- package/dist/utils/is-not-nullish.js +18 -0
- package/dist/utils/is-not-nullish.js.map +1 -0
- package/dist/utils/merge-booleans.d.ts +25 -0
- package/dist/utils/merge-booleans.js +37 -0
- package/dist/utils/merge-booleans.js.map +1 -0
- package/dist/utils/to-pascal-case.d.ts +18 -0
- package/dist/utils/to-pascal-case.js +17 -0
- package/dist/utils/to-pascal-case.js.map +1 -0
- package/package.json +41 -3
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/utils/is-not-nullish.ts
|
|
2
|
+
/**
|
|
3
|
+
* Type guard que verifica se um valor não é `null` nem `undefined`.
|
|
4
|
+
*
|
|
5
|
+
* @param value - Valor a ser verificado.
|
|
6
|
+
* @returns `true` se `value` não for `null` nem `undefined`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const values: (string | null | undefined)[] = ['a', null, 'b', undefined];
|
|
10
|
+
* const filtered: string[] = values.filter(isNotNullish);
|
|
11
|
+
*/
|
|
12
|
+
const isNotNullish = (value) => {
|
|
13
|
+
return value !== null && value !== void 0;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { isNotNullish };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=is-not-nullish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-not-nullish.js","names":[],"sources":["../../src/utils/is-not-nullish.ts"],"sourcesContent":["/**\n * Type guard que verifica se um valor não é `null` nem `undefined`.\n *\n * @param value - Valor a ser verificado.\n * @returns `true` se `value` não for `null` nem `undefined`.\n *\n * @example\n * const values: (string | null | undefined)[] = ['a', null, 'b', undefined];\n * const filtered: string[] = values.filter(isNotNullish);\n */\nexport const isNotNullish = <TValue>(\n value: TValue | null | undefined,\n): value is TValue => {\n return value !== null && value !== undefined;\n};\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,gBACX,UACoB;CACpB,OAAO,UAAU,QAAQ,UAAU,KAAA;AACrC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/utils/merge-booleans.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Combina valores booleanos usando a operação lógica OR.
|
|
4
|
+
*
|
|
5
|
+
* Valores `null` e `undefined` são ignorados. Retorna `true` assim que
|
|
6
|
+
* encontra um valor booleano verdadeiro.
|
|
7
|
+
*
|
|
8
|
+
* @param values - Valores booleanos que podem incluir `null` ou `undefined`.
|
|
9
|
+
* @returns `true` quando pelo menos um valor válido é `true`; caso contrário, `false`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const mergeBooleansOr: (...values: Array<boolean | null | undefined>) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Combina valores booleanos usando a operação lógica AND.
|
|
14
|
+
*
|
|
15
|
+
* Valores `null` e `undefined` são ignorados. Retorna `false` assim que
|
|
16
|
+
* encontra um valor booleano falso. Quando nenhum valor booleano válido é
|
|
17
|
+
* fornecido, também retorna `false`.
|
|
18
|
+
*
|
|
19
|
+
* @param values - Valores booleanos que podem incluir `null` ou `undefined`.
|
|
20
|
+
* @returns `true` quando existe pelo menos um valor válido e todos são `true`;
|
|
21
|
+
* caso contrário, `false`.
|
|
22
|
+
*/
|
|
23
|
+
export declare const mergeBooleansAnd: (...values: Array<boolean | null | undefined>) => boolean;
|
|
24
|
+
//#endregion
|
|
25
|
+
//# sourceMappingURL=merge-booleans.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/utils/merge-booleans.ts
|
|
2
|
+
/**
|
|
3
|
+
* Combina valores booleanos usando a operação lógica OR.
|
|
4
|
+
*
|
|
5
|
+
* Valores `null` e `undefined` são ignorados. Retorna `true` assim que
|
|
6
|
+
* encontra um valor booleano verdadeiro.
|
|
7
|
+
*
|
|
8
|
+
* @param values - Valores booleanos que podem incluir `null` ou `undefined`.
|
|
9
|
+
* @returns `true` quando pelo menos um valor válido é `true`; caso contrário, `false`.
|
|
10
|
+
*/
|
|
11
|
+
const mergeBooleansOr = (...values) => {
|
|
12
|
+
return values.some((value) => value === true);
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Combina valores booleanos usando a operação lógica AND.
|
|
16
|
+
*
|
|
17
|
+
* Valores `null` e `undefined` são ignorados. Retorna `false` assim que
|
|
18
|
+
* encontra um valor booleano falso. Quando nenhum valor booleano válido é
|
|
19
|
+
* fornecido, também retorna `false`.
|
|
20
|
+
*
|
|
21
|
+
* @param values - Valores booleanos que podem incluir `null` ou `undefined`.
|
|
22
|
+
* @returns `true` quando existe pelo menos um valor válido e todos são `true`;
|
|
23
|
+
* caso contrário, `false`.
|
|
24
|
+
*/
|
|
25
|
+
const mergeBooleansAnd = (...values) => {
|
|
26
|
+
let hasBooleanValue = false;
|
|
27
|
+
for (const value of values) {
|
|
28
|
+
if (typeof value !== "boolean") continue;
|
|
29
|
+
hasBooleanValue = true;
|
|
30
|
+
if (!value) return false;
|
|
31
|
+
}
|
|
32
|
+
return hasBooleanValue;
|
|
33
|
+
};
|
|
34
|
+
//#endregion
|
|
35
|
+
export { mergeBooleansAnd, mergeBooleansOr };
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=merge-booleans.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-booleans.js","names":[],"sources":["../../src/utils/merge-booleans.ts"],"sourcesContent":["/**\n * Combina valores booleanos usando a operação lógica OR.\n *\n * Valores `null` e `undefined` são ignorados. Retorna `true` assim que\n * encontra um valor booleano verdadeiro.\n *\n * @param values - Valores booleanos que podem incluir `null` ou `undefined`.\n * @returns `true` quando pelo menos um valor válido é `true`; caso contrário, `false`.\n */\nexport const mergeBooleansOr = (\n ...values: Array<boolean | null | undefined>\n): boolean => {\n return values.some((value) => value === true);\n};\n\n/**\n * Combina valores booleanos usando a operação lógica AND.\n *\n * Valores `null` e `undefined` são ignorados. Retorna `false` assim que\n * encontra um valor booleano falso. Quando nenhum valor booleano válido é\n * fornecido, também retorna `false`.\n *\n * @param values - Valores booleanos que podem incluir `null` ou `undefined`.\n * @returns `true` quando existe pelo menos um valor válido e todos são `true`;\n * caso contrário, `false`.\n */\nexport const mergeBooleansAnd = (\n ...values: Array<boolean | null | undefined>\n): boolean => {\n let hasBooleanValue = false;\n\n for (const value of values) {\n if (typeof value !== 'boolean') {\n continue;\n }\n\n hasBooleanValue = true;\n\n if (!value) {\n return false;\n }\n }\n\n return hasBooleanValue;\n};\n"],"mappings":";;;;;;;;;;AASA,MAAa,mBACX,GAAG,WACS;CACZ,OAAO,OAAO,MAAM,UAAU,UAAU,IAAI;AAC9C;;;;;;;;;;;;AAaA,MAAa,oBACX,GAAG,WACS;CACZ,IAAI,kBAAkB;CAEtB,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,OAAO,UAAU,WACnB;EAGF,kBAAkB;EAElB,IAAI,CAAC,OACH,OAAO;CAEX;CAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/utils/to-pascal-case.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Converte um tipo string literal para PascalCase, separando por `-` ou `_`.
|
|
4
|
+
*
|
|
5
|
+
* @template S - Tipo string literal a ser convertido.
|
|
6
|
+
*/
|
|
7
|
+
export type PascalCase<S extends string> = S extends `${infer Head}-${infer Tail}` ? `${Capitalize<Head>}${PascalCase<Tail>}` : S extends `${infer Head}_${infer Tail}` ? `${Capitalize<Head>}${PascalCase<Tail>}` : Capitalize<S>;
|
|
8
|
+
/**
|
|
9
|
+
* Converte uma string para PascalCase.
|
|
10
|
+
* Separa nos delimitadores `-`, `_` e espaços, capitaliza cada segmento e os une.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* toPascalCase('hello-world') // 'HelloWorld'
|
|
14
|
+
* toPascalCase('foo_bar baz') // 'FooBarBaz'
|
|
15
|
+
*/
|
|
16
|
+
export declare const toPascalCase: (valor: string) => string;
|
|
17
|
+
//#endregion
|
|
18
|
+
//# sourceMappingURL=to-pascal-case.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/utils/to-pascal-case.ts
|
|
2
|
+
const PASCAL_CASE_SEPARATOR = /[-_\s]+/;
|
|
3
|
+
/**
|
|
4
|
+
* Converte uma string para PascalCase.
|
|
5
|
+
* Separa nos delimitadores `-`, `_` e espaços, capitaliza cada segmento e os une.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* toPascalCase('hello-world') // 'HelloWorld'
|
|
9
|
+
* toPascalCase('foo_bar baz') // 'FooBarBaz'
|
|
10
|
+
*/
|
|
11
|
+
const toPascalCase = (valor) => {
|
|
12
|
+
return valor.split(PASCAL_CASE_SEPARATOR).filter(Boolean).map((segmento) => segmento.charAt(0).toUpperCase() + segmento.slice(1)).join("");
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { toPascalCase };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=to-pascal-case.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-pascal-case.js","names":[],"sources":["../../src/utils/to-pascal-case.ts"],"sourcesContent":["const PASCAL_CASE_SEPARATOR = /[-_\\s]+/;\n\n/**\n * Converte um tipo string literal para PascalCase, separando por `-` ou `_`.\n *\n * @template S - Tipo string literal a ser convertido.\n */\nexport type PascalCase<S extends string> =\n S extends `${infer Head}-${infer Tail}`\n ? `${Capitalize<Head>}${PascalCase<Tail>}`\n : S extends `${infer Head}_${infer Tail}`\n ? `${Capitalize<Head>}${PascalCase<Tail>}`\n : Capitalize<S>;\n\n/**\n * Converte uma string para PascalCase.\n * Separa nos delimitadores `-`, `_` e espaços, capitaliza cada segmento e os une.\n *\n * @example\n * toPascalCase('hello-world') // 'HelloWorld'\n * toPascalCase('foo_bar baz') // 'FooBarBaz'\n */\nexport const toPascalCase = (valor: string) => {\n return valor\n .split(PASCAL_CASE_SEPARATOR)\n .filter(Boolean)\n .map((segmento) => segmento.charAt(0).toUpperCase() + segmento.slice(1))\n .join('');\n};\n"],"mappings":";AAAA,MAAM,wBAAwB;;;;;;;;;AAsB9B,MAAa,gBAAgB,UAAkB;CAC7C,OAAO,MACJ,MAAM,qBAAqB,CAAC,CAC5B,OAAO,OAAO,CAAC,CACf,KAAK,aAAa,SAAS,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,SAAS,MAAM,CAAC,CAAC,CAAC,CACvE,KAAK,EAAE;AACZ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucasbernardosn/ts-utils",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "TypeScript utilities and type helpers, framework-agnostic.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"default": "./dist/index.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@biomejs/biome": "2.6.3",
|
|
14
|
+
"@lucasbernardosn/ts-config": "0.2.0",
|
|
15
|
+
"@types/node": "26.6.3",
|
|
16
|
+
"publint": "0.3.25",
|
|
17
|
+
"tsdown": "0.23.0",
|
|
18
|
+
"typescript": "6.0.3",
|
|
19
|
+
"vitest": "5.0.3"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/LucasBernardoSN/react-monorepo.git",
|
|
32
|
+
"directory": "packages/ts-utils"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsdown",
|
|
36
|
+
"build:report": "tsdown --report",
|
|
37
|
+
"lint": "biome lint --write",
|
|
38
|
+
"format": "biome format --write",
|
|
39
|
+
"check": "biome check --write",
|
|
40
|
+
"test": "vitest",
|
|
41
|
+
"test:run": "vitest run",
|
|
42
|
+
"typecheck": "tsc --noEmit"
|
|
43
|
+
}
|
|
6
44
|
}
|