@h3ravel/support 0.6.0 → 0.7.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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # @h3ravel/support
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b0d1b7c: feat: flip @h3ravel/shared dependency on @h3ravel/support as it should be.
8
+
9
+ ### Patch Changes
10
+
11
+ - ce51a92: fix: re-export @h3ravel/shared object contract interfaces as types
12
+
3
13
  ## 0.6.0
4
14
 
5
15
  ### Minor Changes
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ <p align="center"><a href="https://h3ravel.toneflix.net" target="_blank"><img src="https://raw.githubusercontent.com/h3ravel/assets/refs/heads/main/logo-full.svg" width="400" alt="H3ravel Logo"></a></p>
2
+
3
+ [![Framework][ix]][lx]
4
+ [![Support Package Version][i1]][l1]
5
+
6
+ # About H3ravel/support
7
+
8
+ This package provides first class support, reusable components and helpers used across the [H3ravel](https://h3ravel.toneflix.net) ecosystem, we strive to keep this framework agnostic so you can use whatever you can find, where ever you can.
9
+
10
+ ## Contributing
11
+
12
+ Thank you for considering contributing to the H3ravel framework! The contribution guide can be found in the [H3ravel documentation](#!).
13
+
14
+ ## Code of Conduct
15
+
16
+ In order to ensure that the H3ravel community is welcoming to all, please review and abide by the [Code of Conduct](#).
17
+
18
+ ## Security Vulnerabilities
19
+
20
+ If you discover a security vulnerability within H3ravel, please send an e-mail to Legacy via hamzas.legacy@toneflix.ng. All security vulnerabilities will be promptly addressed.
21
+
22
+ ## License
23
+
24
+ The H3ravel framework is open-sourced software licensed under the [MIT license](LICENSE).
25
+
26
+ [ix]: https://img.shields.io/npm/v/%40h3ravel%2Fcore?style=flat-square&label=Framework&color=%230970ce
27
+ [lx]: https://www.npmjs.com/package/@h3ravel/core
28
+ [i1]: https://img.shields.io/npm/v/%40h3ravel%2Fsupport?style=flat-square&label=@h3ravel/support&color=%230970ce
29
+ [l1]: https://www.npmjs.com/package/@h3ravel/support
package/dist/index.d.cts CHANGED
@@ -1,36 +1,11 @@
1
+ import { DotFlatten, DotNestedKeys, DotNestedValue } from '@h3ravel/shared';
2
+ export { DotFlatten, DotNestedKeys, DotNestedValue } from '@h3ravel/shared';
3
+
1
4
  /**
2
5
  * Converts CamelCased strings to snake_case
3
6
  */
4
7
  type CamelToSnakeCase<S extends string> = S extends `${infer T}${infer U}` ? `${T extends Capitalize<T> ? '_' : ''}${Lowercase<T>}${CamelToSnakeCase<U>}` : S;
5
8
 
6
- /**
7
- * Adds a dot prefix to nested keys
8
- */
9
- type DotPrefix<T extends string, U extends string> = T extends '' ? U : `${T}.${U}`;
10
- /**
11
- * Converts a union of objects into a single merged object
12
- */
13
- type MergeUnion<T> = (T extends any ? (k: T) => void : never) extends (k: infer I) => void ? {
14
- [K in keyof I]: I[K];
15
- } : never;
16
- /**
17
- * Flattens nested objects into dotted keys
18
- */
19
- type DotFlatten<T, Prefix extends string = ''> = MergeUnion<{
20
- [K in keyof T & string]: T[K] extends Record<string, any> ? DotFlatten<T[K], DotPrefix<Prefix, K>> : {
21
- [P in DotPrefix<Prefix, K>]: T[K];
22
- };
23
- }[keyof T & string]>;
24
- /**
25
- * Builds "nested.key" paths for autocompletion
26
- */
27
- type DotNestedKeys<T> = {
28
- [K in keyof T & string]: T[K] extends object ? `${K}` | `${K}.${DotNestedKeys<T[K]>}` : `${K}`;
29
- }[keyof T & string];
30
- /**
31
- * Retrieves type at a given dot-path
32
- */
33
- type DotNestedValue<T, Path extends string> = Path extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? DotNestedValue<T[Key], Rest> : never : Path extends keyof T ? T[Path] : never;
34
9
  /**
35
10
  * Convert CamelCased Object keys to snake_case
36
11
  */
@@ -268,4 +243,4 @@ declare const substitute: (str: string, data?: Record<string, unknown>, def?: st
268
243
  */
269
244
  declare const truncate: (str: string, len?: number, suffix?: string) => string;
270
245
 
271
- export { type CamelToSnakeCase, type DotFlatten, type DotNestedKeys, type DotNestedValue, type KeysToSnakeCase, abbreviate, after, afterLast, before, beforeLast, capitalize, chunk, dot, extractProperties, getValue, humanize, modObj, pluralize, range, safeDot, setNested, singularize, slugify, slugifyKeys, subString, substitute, toBytes, toHumanTime, truncate };
246
+ export { type CamelToSnakeCase, type KeysToSnakeCase, abbreviate, after, afterLast, before, beforeLast, capitalize, chunk, dot, extractProperties, getValue, humanize, modObj, pluralize, range, safeDot, setNested, singularize, slugify, slugifyKeys, subString, substitute, toBytes, toHumanTime, truncate };
package/dist/index.d.ts CHANGED
@@ -1,36 +1,11 @@
1
+ import { DotFlatten, DotNestedKeys, DotNestedValue } from '@h3ravel/shared';
2
+ export { DotFlatten, DotNestedKeys, DotNestedValue } from '@h3ravel/shared';
3
+
1
4
  /**
2
5
  * Converts CamelCased strings to snake_case
3
6
  */
4
7
  type CamelToSnakeCase<S extends string> = S extends `${infer T}${infer U}` ? `${T extends Capitalize<T> ? '_' : ''}${Lowercase<T>}${CamelToSnakeCase<U>}` : S;
5
8
 
6
- /**
7
- * Adds a dot prefix to nested keys
8
- */
9
- type DotPrefix<T extends string, U extends string> = T extends '' ? U : `${T}.${U}`;
10
- /**
11
- * Converts a union of objects into a single merged object
12
- */
13
- type MergeUnion<T> = (T extends any ? (k: T) => void : never) extends (k: infer I) => void ? {
14
- [K in keyof I]: I[K];
15
- } : never;
16
- /**
17
- * Flattens nested objects into dotted keys
18
- */
19
- type DotFlatten<T, Prefix extends string = ''> = MergeUnion<{
20
- [K in keyof T & string]: T[K] extends Record<string, any> ? DotFlatten<T[K], DotPrefix<Prefix, K>> : {
21
- [P in DotPrefix<Prefix, K>]: T[K];
22
- };
23
- }[keyof T & string]>;
24
- /**
25
- * Builds "nested.key" paths for autocompletion
26
- */
27
- type DotNestedKeys<T> = {
28
- [K in keyof T & string]: T[K] extends object ? `${K}` | `${K}.${DotNestedKeys<T[K]>}` : `${K}`;
29
- }[keyof T & string];
30
- /**
31
- * Retrieves type at a given dot-path
32
- */
33
- type DotNestedValue<T, Path extends string> = Path extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? DotNestedValue<T[Key], Rest> : never : Path extends keyof T ? T[Path] : never;
34
9
  /**
35
10
  * Convert CamelCased Object keys to snake_case
36
11
  */
@@ -268,4 +243,4 @@ declare const substitute: (str: string, data?: Record<string, unknown>, def?: st
268
243
  */
269
244
  declare const truncate: (str: string, len?: number, suffix?: string) => string;
270
245
 
271
- export { type CamelToSnakeCase, type DotFlatten, type DotNestedKeys, type DotNestedValue, type KeysToSnakeCase, abbreviate, after, afterLast, before, beforeLast, capitalize, chunk, dot, extractProperties, getValue, humanize, modObj, pluralize, range, safeDot, setNested, singularize, slugify, slugifyKeys, subString, substitute, toBytes, toHumanTime, truncate };
246
+ export { type CamelToSnakeCase, type KeysToSnakeCase, abbreviate, after, afterLast, before, beforeLast, capitalize, chunk, dot, extractProperties, getValue, humanize, modObj, pluralize, range, safeDot, setNested, singularize, slugify, slugifyKeys, subString, substitute, toBytes, toHumanTime, truncate };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@h3ravel/support",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Shared helpers, facades and utilities for H3ravel.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,8 +8,19 @@
8
8
  "publishConfig": {
9
9
  "access": "public"
10
10
  },
11
+ "keywords": [
12
+ "h3ravel",
13
+ "modern",
14
+ "web",
15
+ "H3",
16
+ "framework",
17
+ "nodejs",
18
+ "typescript",
19
+ "laravel"
20
+ ],
11
21
  "devDependencies": {
12
- "typescript": "^5.4.0"
22
+ "typescript": "^5.4.0",
23
+ "@h3ravel/shared": "0.7.0"
13
24
  },
14
25
  "scripts": {
15
26
  "barrel": "barrelsby --directory src --delete --singleQuotes",
@@ -1,49 +1,8 @@
1
1
  import { CamelToSnakeCase } from './StrContract'
2
2
 
3
- /**
4
- * Adds a dot prefix to nested keys
5
- */
6
- type DotPrefix<T extends string, U extends string> =
7
- T extends '' ? U : `${T}.${U}`
8
-
9
- /**
10
- * Converts a union of objects into a single merged object
11
- */
12
- type MergeUnion<T> =
13
- (T extends any ? (k: T) => void : never) extends
14
- (k: infer I) => void ? { [K in keyof I]: I[K] } : never
15
-
16
- /**
17
- * Flattens nested objects into dotted keys
18
- */
19
- export type DotFlatten<T, Prefix extends string = ''> = MergeUnion<{
20
- [K in keyof T & string]:
21
- T[K] extends Record<string, any>
22
- ? DotFlatten<T[K], DotPrefix<Prefix, K>>
23
- : { [P in DotPrefix<Prefix, K>]: T[K] }
24
- }[keyof T & string]>
25
-
26
- /**
27
- * Builds "nested.key" paths for autocompletion
28
- */
29
- export type DotNestedKeys<T> = {
30
- [K in keyof T & string]:
31
- T[K] extends object
32
- ? `${K}` | `${K}.${DotNestedKeys<T[K]>}`
33
- : `${K}`
34
- }[keyof T & string]
35
-
36
- /**
37
- * Retrieves type at a given dot-path
38
- */
39
- export type DotNestedValue<T, Path extends string> =
40
- Path extends `${infer Key}.${infer Rest}`
41
- ? Key extends keyof T
42
- ? DotNestedValue<T[Key], Rest>
43
- : never
44
- : Path extends keyof T
45
- ? T[Path]
46
- : never
3
+ export type { DotFlatten } from '@h3ravel/shared'
4
+ export type { DotNestedKeys } from '@h3ravel/shared'
5
+ export type { DotNestedValue } from '@h3ravel/shared'
47
6
 
48
7
  /**
49
8
  * Convert CamelCased Object keys to snake_case