-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhalt.ts
93 lines (69 loc) · 1.68 KB
/
halt.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import Kink, { KinkMesh } from '@termsurf/kink'
const host = '@termsurf/have'
export type BaseLink = {
call?: string
lead?: unknown
need?: Array<unknown> | unknown
void?: boolean
}
export type ListLink = {
lead: Array<KinkMesh>
}
type Base = {
form_miss: BaseLink
halt_list: BaseLink
link_form: BaseLink
link_miss: BaseLink
link_need: BaseLink
link_size: BaseLink
link_take: BaseLink
list_miss: BaseLink
}
type Name = keyof Base
Kink.base(host, 'form_miss', () => ({
code: 2,
note: `Form is undefined.`,
}))
Kink.load(host, 'form_miss', loadBase)
Kink.base(host, 'halt_list', () => ({
code: 8,
note: `Multiple data errors.`,
}))
Kink.load(host, 'halt_list', loadBase)
Kink.base(host, 'link_form', () => ({
code: 6,
note: `Link is invalid form.`,
}))
Kink.load(host, 'link_form', loadBase)
Kink.base(host, 'link_miss', () => ({
code: 7,
note: `Link is not valid.`,
}))
Kink.load(host, 'link_miss', loadBase)
Kink.base(host, 'link_need', () => ({
code: 3,
note: `Link is required.`,
}))
Kink.load(host, 'link_need', loadBase)
Kink.base(host, 'link_size', () => ({
code: 4,
note: `Link size out of bounds.`,
}))
Kink.load(host, 'link_size', loadBase)
Kink.base(host, 'link_take', () => ({
code: 5,
note: `Link provided invalid value.`,
}))
Kink.load(host, 'link_take', loadBase)
Kink.base(host, 'list_miss', () => ({
code: 4,
note: `List does not contain item.`,
}))
Kink.load(host, 'list_miss', loadBase)
Kink.code(host, (code: number) => code.toString(16).padStart(4, '0'))
export default function kink<N extends Name>(form: N, link?: Base[N]) {
return Kink.make(host, form, link)
}
function loadBase(take: BaseLink) {
return take
}