@orpc/shared 0.0.0-next.83ec2e8 → 0.0.0-next.842d6b5

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/src/object.ts DELETED
@@ -1,79 +0,0 @@
1
- import { isPlainObject } from 'is-what'
2
-
3
- export type Segment = string | number
4
-
5
- export function set(
6
- root: Readonly<Record<string, unknown> | unknown[]>,
7
- segments: Readonly<Segment[]>,
8
- value: unknown,
9
- ): unknown {
10
- const ref = { root }
11
-
12
- let currentRef: any = ref
13
- let preSegment: string | number = 'root'
14
-
15
- for (const segment of segments) {
16
- currentRef = currentRef[preSegment]
17
- preSegment = segment
18
- }
19
-
20
- currentRef[preSegment] = value
21
-
22
- return ref.root
23
- }
24
-
25
- export function get(
26
- root: Readonly<Record<string, unknown> | unknown[]>,
27
- segments: Readonly<Segment[]>,
28
- ): unknown {
29
- const ref = { root }
30
-
31
- let currentRef: any = ref
32
- let preSegment: string | number = 'root'
33
-
34
- for (const segment of segments) {
35
- if (
36
- (typeof currentRef !== 'object' && typeof currentRef !== 'function')
37
- || currentRef === null
38
- ) {
39
- return undefined
40
- }
41
-
42
- currentRef = currentRef[preSegment]
43
- preSegment = segment
44
- }
45
-
46
- if (
47
- (typeof currentRef !== 'object' && typeof currentRef !== 'function')
48
- || currentRef === null
49
- ) {
50
- return undefined
51
- }
52
-
53
- return currentRef[preSegment]
54
- }
55
-
56
- export function findDeepMatches(
57
- check: (value: unknown) => boolean,
58
- payload: unknown,
59
- segments: Segment[] = [],
60
- maps: Segment[][] = [],
61
- values: unknown[] = [],
62
- ): { maps: Segment[][], values: unknown[] } {
63
- if (check(payload)) {
64
- maps.push(segments)
65
- values.push(payload)
66
- }
67
- else if (Array.isArray(payload)) {
68
- payload.forEach((v, i) => {
69
- findDeepMatches(check, v, [...segments, i], maps, values)
70
- })
71
- }
72
- else if (isPlainObject(payload)) {
73
- for (const key in payload) {
74
- findDeepMatches(check, payload[key], [...segments, key], maps, values)
75
- }
76
- }
77
-
78
- return { maps, values }
79
- }
@@ -1,22 +0,0 @@
1
- import { value, type Value } from './value'
2
-
3
- describe('value', () => {
4
- it('types', () => {
5
- let v: Value<number> = 42
6
-
7
- v = async () => 42
8
- v = () => 42
9
-
10
- // @ts-expect-error - not a number
11
- v = null
12
-
13
- // @ts-expect-error - not a number
14
- v = 'string'
15
- })
16
-
17
- it('function', () => {
18
- expectTypeOf(value(Number(42))).toEqualTypeOf<Promise<number>>()
19
- expectTypeOf(value(() => Number(42))).toEqualTypeOf<Promise<number>>()
20
- expectTypeOf(value(async () => Number(42))).toEqualTypeOf<Promise<number>>()
21
- })
22
- })
package/src/value.test.ts DELETED
@@ -1,17 +0,0 @@
1
- import { value } from './value'
2
-
3
- it('value', async () => {
4
- expect(await value(42)).toBe(42)
5
- expect(await value(() => 42)).toBe(42)
6
- expect(await value(async () => 42)).toBe(42)
7
-
8
- expect(await value(() => ({
9
- then: (resolve: (value: number) => void) => resolve(42),
10
- }))).toBe(42)
11
-
12
- expect(await value(async () => ({
13
- then: (resolve: (value: number) => void) => resolve(42),
14
- }))).toBe(42)
15
-
16
- expect(await value(() => ({ value: '42' }))).toEqual({ value: '42' })
17
- })
package/src/value.ts DELETED
@@ -1,12 +0,0 @@
1
- import type { Promisable } from 'type-fest'
2
-
3
- export type Value<T> = T | (() => Promisable<T>)
4
-
5
- export function value<T extends Value<any>>(value: T):
6
- Promise<T extends Value<infer U> ? U : never> {
7
- if (typeof value === 'function') {
8
- return value()
9
- }
10
-
11
- return value as any
12
- }