aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/lfs.d.tl82
-rw-r--r--types/ltn12.d.tl45
-rw-r--r--types/mimetypes.d.tl5
-rw-r--r--types/socket.d.tl158
-rw-r--r--types/socket/http.d.tl28
-rw-r--r--types/ssl.d.tl113
-rw-r--r--types/ssl/https.d.tl50
-rw-r--r--types/zlib.d.tl10
8 files changed, 491 insertions, 0 deletions
diff --git a/types/lfs.d.tl b/types/lfs.d.tl
new file mode 100644
index 00000000..12535ca4
--- /dev/null
+++ b/types/lfs.d.tl
@@ -0,0 +1,82 @@
1local record lfs
2
3 enum FileMode
4 "file"
5 "directory"
6 "link"
7 "socket"
8 "named pipe"
9 "char device"
10 "block device"
11 "other"
12 end
13
14 record Attributes
15 dev: number
16 ino: number
17 mode: FileMode
18 nlink: number
19 uid: number
20 gid: number
21 rdev: number
22 access: number
23 modification: number
24 change: number
25 size: number
26 permissions: string
27 blocks: number
28 blksize: number
29 end
30
31 enum OpenFileMode
32 "binary"
33 "text"
34 end
35
36 enum LockMode
37 "r"
38 "w"
39 end
40
41 record Lock
42 free: function()
43 end
44
45 dir: function(string): function(): string
46
47 chdir: function(string): boolean, string
48
49 lock_dir: function(string, number): Lock, string
50
51 -- returns number on success, really!? this should be fixed in the lfs library
52 link: function(string, string, boolean): number, string
53
54 mkdir: function(string): boolean, string
55
56 rmdir: function(string): boolean, string
57
58 setmode: function(string, OpenFileMode): boolean, string
59
60 currentdir: function(): string
61
62 attributes: function(string): Attributes
63 attributes: function(string, string): string
64 attributes: function(string, string): number
65 attributes: function(string, string): FileMode
66 attributes: function(string, Attributes): Attributes
67
68 symlinkattributes: function(string): Attributes
69 symlinkattributes: function(string, string): string
70 symlinkattributes: function(string, string): number
71 symlinkattributes: function(string, string): FileMode
72 symlinkattributes: function(string, Attributes): Attributes
73
74 touch: function(string, number, number): boolean, string
75
76 -- TODO: FILE needs to be renamed to io.FILE in tl itself
77 lock: function(FILE, LockMode, number, number): boolean, string
78 unlock: function(FILE, number, number): boolean, string
79
80end
81
82return lfs
diff --git a/types/ltn12.d.tl b/types/ltn12.d.tl
new file mode 100644
index 00000000..cd2375fc
--- /dev/null
+++ b/types/ltn12.d.tl
@@ -0,0 +1,45 @@
1
2local record ltn12
3 type Filter = function(string): string, string
4 type Sink = function(string, string): boolean, string
5 type Source = function(): string, string
6
7 type FancySink = function(string, string): boolean, string | FancySink
8 type FancySource = function(): string, string | FancySource
9
10 -- Docs just say returns a truthy value on success
11 -- Since this value should really only be
12 -- used to check for truthiness, any seems fine here
13 type Pump = function(Source, Sink): any, string
14
15 record filter
16 chain: function(Filter, Filter, ...: Filter): Filter
17
18 cycle: function(string, string, any): Filter
19 end
20 record pump
21 all: Pump
22 step: Pump
23 end
24 record sink
25 chain: function(Filter, Sink): Sink
26 error: function(string): Sink
27 file: function(FILE, string): Sink
28 null: function(): Sink
29 simplify: function(FancySink): Sink
30 table: function({string}): Sink, {string}
31 end
32 record source
33 cat: function(Source, ...: Source): Source
34 chain: function(Source, Filter): Source
35 empty: function(): Source
36 error: function(string): Source
37 file: function(FILE): Source
38 file: function(FILE, string): Source
39 simplify: function(FancySource): Source
40 string: function(string): Source
41 table: function({string}): Source, {string}
42 end
43 end
44
45 return ltn12 \ No newline at end of file
diff --git a/types/mimetypes.d.tl b/types/mimetypes.d.tl
new file mode 100644
index 00000000..a735225d
--- /dev/null
+++ b/types/mimetypes.d.tl
@@ -0,0 +1,5 @@
1local record mimetypes
2 guess: function(string): string
3end
4
5return mimetypes \ No newline at end of file
diff --git a/types/socket.d.tl b/types/socket.d.tl
new file mode 100644
index 00000000..e62e907b
--- /dev/null
+++ b/types/socket.d.tl
@@ -0,0 +1,158 @@
1local ltn12 = require("ltn12")
2local Sink = ltn12.Sink
3local Source = ltn12.Source
4
5local record socket
6 record TCP
7 -- master methods
8 bind: function(TCP, string, integer)
9 connect: function(TCP, string, integer): integer, string
10 listen: function(TCP, integer): integer, string
11
12 -- client methods
13 getpeername: function(TCP): string, integer
14
15 enum TCPReceivePattern
16 "*l"
17 "*a"
18 end
19 enum TCPReceiveError
20 "closed"
21 "timeout"
22 end
23 receive: function(TCP, TCPReceivePattern|integer, string): string, TCPReceiveError
24
25 send: function(TCP, string, integer, integer): integer, string, integer
26
27 enum TCPShutdownMode
28 "both"
29 "send"
30 "receive"
31 end
32 shutdown: function(TCP, TCPShutdownMode): integer
33
34 -- server methods
35 accept: function(TCP): TCP, string
36
37 -- client and server methods
38 enum TCPOption
39 "keepalive"
40 "reuseaddr"
41 "tcp-nodelay"
42 end
43 enum TCPLinger
44 "linger"
45 end
46 record TCPLingerOption
47 on: boolean
48 timeout: integer
49 end
50 setoption: function(TCP, TCPOption): integer
51 setoption: function(TCP, TCPLinger, TCPLingerOption): integer
52
53 -- master, client, and server methods
54 close: function(TCP)
55
56 getsockname: function(TCP): string, integer
57
58 getstats: function(TCP): integer, integer, integer
59
60 setstats: function(TCP, integer, integer, integer): integer
61
62 enum TCPTimeoutMode
63 "b"
64 "t"
65 end
66 settimeout: function(TCP, integer, TCPTimeoutMode)
67 end
68 record UDP
69 close: function(UDP)
70
71 getpeername: function(UDP): string, integer
72
73 getsockname: function(UDP): string, integer
74
75 enum UDPTimeout
76 "timeout"
77 end
78 receive: function(UDP, integer): string, UDPTimeout
79
80 receivefrom: function(UDP, integer): string, string, integer, UDPTimeout
81
82 send: function(UDP, string): integer, string
83
84 sendto: function(UDP, string, string, integer): integer, string
85
86 setpeername: function(UDP, string, integer): integer, string
87
88 setsockname: function(UDP, string, integer): integer, string
89
90 enum UDPOptions
91 "dontroute"
92 "broadcast"
93 end
94 setoption: function(UDP, UDPOptions, boolean): integer, string
95
96 settimeout: function(UDP, integer)
97 end
98 tcp: function(): TCP, string
99
100 udp: function(): UDP, string
101
102 record dns
103 record DNSResolved
104 name: string
105 alias: {string}
106 ip: {string}
107 end
108 toip: function(): string
109 tohostname: function(string): string, DNSResolved|string
110 gethostname: function(string): string, DNSResolved|string
111 end
112
113 bind: function(string, integer, integer): TCP
114
115 connect: function(string, integer, string, integer): TCP
116
117 _DEBUG: boolean
118
119 newtry: function(function): function
120
121 protect: function(function): function
122
123 -- tagged records/Table Union types would be nice here,
124 -- as this should be {TCP|UDP}
125 -- but I imagine this should be fine for most uses
126 select: function({UDP}, {UDP}, integer): {UDP}, {UDP}, string
127 select: function({TCP}, {TCP}, integer): {TCP}, {TCP}, string
128
129 enum SinkMode
130 "http-chunked"
131 "close-when-done"
132 "keep-open"
133 end
134
135 sink: function(SinkMode, UDP): Sink
136 sink: function(SinkMode, TCP): Sink
137
138 skip: function(integer, ...: any): any...
139
140 sleep: function(integer)
141
142 enum SourceMode
143 "http-chunked"
144 "by-length"
145 "until-closed"
146 end
147
148 source: function(SourceMode, TCP, integer): Source
149 source: function(SourceMode, UDP, integer): Source
150
151 gettime: function(): integer
152
153 try: function(...: any): any...
154
155 _VERSION: string
156end
157
158return socket \ No newline at end of file
diff --git a/types/socket/http.d.tl b/types/socket/http.d.tl
new file mode 100644
index 00000000..2a64872e
--- /dev/null
+++ b/types/socket/http.d.tl
@@ -0,0 +1,28 @@
1local ltn12 = require("ltn12")
2local type Pump = ltn12.Pump
3local type Sink = ltn12.Sink
4local type Source = ltn12.Source
5
6local record http
7 request: function(string): string, integer|string, string, string
8 request: function(string, string): string, integer|string, string, string
9 record HTTPRequest
10 url: string
11 sink: Sink
12 method: string
13 headers: {string:string}
14 source: Source
15 step: Pump
16 proxy: string
17 redirect: boolean
18 create: function
19 end
20 request: function(HTTPRequest): string, integer|string, string, string
21
22 PORT: integer
23 PROXY: string
24 TIMEOUT: integer
25 USERAGENT: string
26end
27
28return http \ No newline at end of file
diff --git a/types/ssl.d.tl b/types/ssl.d.tl
new file mode 100644
index 00000000..1bd40348
--- /dev/null
+++ b/types/ssl.d.tl
@@ -0,0 +1,113 @@
1local socket = require("socket")
2local TCP = socket.TCP
3
4local record ssl
5 record SSLCertificate
6 certificate: string
7 key: string
8 password: string|function
9 end
10 record SSLContext
11 mode: string
12 protocol: string
13 key: string
14 password: string|function
15 certificate: string
16 certificates: {SSLCertificate}
17 cafile: string
18 capath: string
19 verify: string|{string}
20 options: string|{string}
21 ciphers: string
22 ciphersuites: string
23 depth: number
24 dhparam: function
25 curve: string
26 curves_list: string
27 verifyext: string|{string}
28 alpn: string|function|{string}
29 dane: boolean
30 end
31 record X509Certificate
32 enum Algorithm
33 "sha1"
34 "sha256"
35 "sha512"
36 end
37 digest: function(X509Certificate, Algorithm): string
38 extensions: function(X509Certificate): {string}
39 issued: function(X509Certificate, X509Certificate): string
40 issuer: function(X509Certificate): string
41 notbefore: function(X509Certificate): string
42 notafter: function(X509Certificate): string
43 pem: function(X509Certificate): string
44 pubkey: function(X509Certificate): string
45 serial: function(X509Certificate): string
46 enum Encoding
47 "ai5"
48 "utf8"
49 end
50 setencode: function(X509Certificate, Encoding): string
51 subject: function(X509Certificate): string
52 validat: function(X509Certificate, string): boolean
53 end
54 record SSLConnection
55 close: function(SSLConnection)
56 dohandshake: function(SSLConnection): boolean, string
57 getalpn: function(SSLConnection): string
58 getfinished: function(SSLConnection): string
59 getpeercertificate: function(SSLConnection): X509Certificate
60 getpeercertificate: function(SSLConnection, number): X509Certificate
61 getpeerchain: function(SSLConnection): X509Certificate
62 getpeerverification: function(SSLConnection): string
63 getpeerfinished: function(SSLConnection): string
64 getsniname: function(SSLConnection): string
65 getstats: function(SSLConnection): number, number, number
66 info: function(SSLConnection): table
67 info: function(SSLConnection, string): string
68 enum ReceivePattern
69 "*a"
70 "*l"
71 end
72 receive: function(SSLConnection, number|ReceivePattern): string, string
73 receive: function(SSLConnection, number|ReceivePattern, string): string, string
74 send: function(SSLConnection): number, number|string, number
75 send: function(SSLConnection, number): number, number|string, number
76 send: function(SSLConnection, number, number): number, number|string, number
77 setdane: function(SSLConnection, string)
78 setstats: function(SSLConnection, number, number, number): number
79 enum TimeoutMode
80 "b"
81 "t"
82 end
83 settimeout: function(SSLConnection, number)
84 settimeout: function(SSLConnection, number, TimeoutMode)
85 settlsa: function(SSLConnection, number, number, number, number)
86 sni: function(SSLConnection, string)
87 sni: function(SSLConnection, {string:SSLContext})
88 sni: function(SSLConnection, {string:SSLContext}, boolean)
89 enum Reason
90 "read"
91 "write"
92 "nothing"
93 end
94 want: function(SSLConnection): Reason
95 end
96
97 record config
98 protocols: {string:boolean}
99 curves: {string:boolean}
100 capabilities: {string:boolean}
101 options: {string:boolean}
102 algorithms: {string:boolean}
103 end
104
105 newcontext: function(SSLContext): SSLContext
106 wrap: function(TCP, SSLContext): SSLConnection
107 loadcertificate: function(string): X509Certificate
108
109 _COPYRIGHT: string
110 _VERSION: string
111end
112
113return ssl \ No newline at end of file
diff --git a/types/ssl/https.d.tl b/types/ssl/https.d.tl
new file mode 100644
index 00000000..94c38df6
--- /dev/null
+++ b/types/ssl/https.d.tl
@@ -0,0 +1,50 @@
1local ssl = require("ssl")
2local SSLCertificate = ssl.SSLCertificate
3local SSLConnection = ssl.SSLConnection
4
5local ltn12 = require("ltn12")
6local Pump = ltn12.Pump
7local Sink = ltn12.Sink
8local Source = ltn12.Source
9
10local record https
11 record HTTPSRequest
12 -- HTTP options
13 url: string|{string}
14 sink: Sink<string>
15 method: string
16 headers: {string:string}
17 source: Source<string>
18 step: Pump<string>
19 -- proxy: string -- not supported
20 -- redirect: boolean -- not supported
21 -- create: function -- https implements its own
22
23 -- SSL options
24 mode: string
25 protocol: string
26 key: string
27 password: string|function
28 certificate: string
29 certificates: {SSLCertificate}
30 cafile: string
31 capath: string
32 verify: string|{string}
33 options: string|{string}
34 ciphers: string
35 ciphersuites: string
36 depth: number
37 dhparam: function
38 curve: string
39 curves_list: string
40 verifyext: string|{string}
41 alpn: string|function|{string}
42 dane: boolean
43 end
44 request: function(string): string, number, {string:string}, string
45 request: function(string, string): string, number, {string:string}, string
46 request: function(HTTPSRequest): string, number, {string:string}, string
47 tcp: function(): function(): SSLConnection
48end
49
50return https \ No newline at end of file
diff --git a/types/zlib.d.tl b/types/zlib.d.tl
new file mode 100644
index 00000000..cd08a721
--- /dev/null
+++ b/types/zlib.d.tl
@@ -0,0 +1,10 @@
1local record zlib
2 _VERSION: string
3 deflate: function(integer, integer): function(string, string): string
4 inflate: function(integer): function(string): string
5 crc32: function(): function(string): integer
6 compress: function(string, integer, integer, integer): string
7 decompress: function(string, integer): string
8 crc32: function((function(string): integer), string): integer
9end
10return zlib \ No newline at end of file