@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/README.md +77 -0
- package/dist/index.d.mts +306 -0
- package/dist/index.d.ts +306 -0
- package/dist/index.mjs +626 -0
- package/package.json +24 -20
- package/dist/error.js +0 -73
- package/dist/error.js.map +0 -1
- package/dist/index.js +0 -81
- package/dist/index.js.map +0 -1
- package/dist/src/error.d.ts +0 -58
- package/dist/src/error.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -7
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/json.d.ts +0 -2
- package/dist/src/json.d.ts.map +0 -1
- package/dist/src/object.d.ts +0 -8
- package/dist/src/object.d.ts.map +0 -1
- package/dist/src/value.d.ts +0 -4
- package/dist/src/value.d.ts.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/error.test.ts +0 -22
- package/src/error.ts +0 -106
- package/src/index.ts +0 -8
- package/src/json.ts +0 -11
- package/src/object.ts +0 -79
- package/src/value.test-d.ts +0 -22
- package/src/value.test.ts +0 -17
- package/src/value.ts +0 -12
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
|
-
}
|
package/src/value.test-d.ts
DELETED
|
@@ -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
|
-
}
|