MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1type AntType =
2 | 'undefined'
3 | 'null'
4 | 'boolean'
5 | 'number'
6 | 'bigint'
7 | 'string'
8 | 'symbol'
9 | 'object'
10 | 'array'
11 | 'function'
12 | 'cfunc'
13 | 'closure'
14 | 'promise'
15 | 'generator'
16 | 'err'
17 | 'typedarray'
18 | 'ffi'
19 | 'ntarg';
20
21type AntHost =
22 | 'cygwin'
23 | 'darwin'
24 | 'dragonfly'
25 | 'emscripten'
26 | 'freebsd'
27 | 'gnu'
28 | 'haiku'
29 | 'linux'
30 | 'netbsd'
31 | 'openbsd'
32 | 'windows'
33 | 'sunos'
34 | 'os/2';
35
36interface SymbolConstructor {
37 readonly inspect: symbol;
38}
39
40interface AntPoolInfo {
41 used: number;
42 capacity: number;
43 blocks: number;
44}
45
46interface AntStringPoolInfo extends AntPoolInfo {
47 pooled: AntPoolInfo;
48 largeLive: AntPoolInfo;
49 largeReusable: AntPoolInfo;
50 largeQuarantine: AntPoolInfo;
51}
52
53interface AntPoolStats {
54 rope: AntPoolInfo;
55 symbol: AntPoolInfo;
56 bigint: AntPoolInfo;
57 string: AntStringPoolInfo;
58 totalUsed: number;
59 totalCapacity: number;
60}
61
62interface AntExternalMemory {
63 buffers: number;
64 code: number;
65 total: number;
66}
67
68interface AntAllocStats {
69 objectCount: number;
70 objects: number;
71 overflow: number;
72 extraSlots: number;
73 promises: number;
74 proxies: number;
75 exotic: number;
76 arrays: number;
77 shapes: number;
78 closures: number;
79 upvalues: number;
80 propRefs: number;
81 total: number;
82}
83
84interface AntStatsResult {
85 pools: AntPoolStats;
86 alloc: AntAllocStats;
87 external: AntExternalMemory;
88 intern: {
89 count: number;
90 bytes: number;
91 };
92 vm?: {
93 stackSize: number;
94 stackUsed: number;
95 maxFrames: number;
96 framesUsed: number;
97 };
98 cstack: number;
99 rss?: number;
100 virtualSize?: number;
101}
102
103interface AntRaw {
104 readonly stack: string;
105 typeof(t: unknown): number;
106 ctorPropFeedback(fn: Function): AntCtorPropFeedback;
107 gcMarkProfile(): AntGcMarkProfile;
108 gcMarkProfileEnable(enabled?: boolean): boolean;
109 gcMarkProfileReset(): void;
110}
111
112interface AntCtorPropFeedback {
113 samples: number;
114 overflowFrom: number;
115 inobjLimit: number;
116 inobjLimitFrozen: boolean;
117 slackRemaining: number;
118 bins: number[];
119 name?: string;
120 filename?: string;
121}
122
123interface AntGcMarkProfile {
124 enabled: boolean;
125 collections: number;
126 funcVisits: number;
127 childEdges: number;
128 constSlots: number;
129 timeNs: number;
130 timeMs: number;
131}
132
133interface HttpContext {
134 req: {
135 method: string;
136 uri: string;
137 query: string;
138 body: string;
139 header(name: string): string | undefined;
140 };
141 res: {
142 header(name: string, value: string): void;
143 status(code: number): void;
144 body(body: string, status?: number, contentType?: string): void;
145 html(body: string, status?: number): void;
146 json(data: unknown, status?: number): void;
147 notFound(): void;
148 redirect(url: string, status?: number): void;
149 };
150 set(key: string, value: unknown): void;
151 get(key: string): unknown;
152}
153
154interface AntStatic {
155 version: string;
156 target: string;
157 revision: string;
158 buildDate: string;
159 host: AntHost;
160
161 inspect(...args: unknown[]): void;
162 typeof(t: unknown): AntType | '??';
163
164 raw: AntRaw;
165 stats(): AntStatsResult;
166 suppressReporting(): void;
167
168 sleep(seconds: number): void;
169 msleep(milliseconds: number): void;
170 usleep(microseconds: number): void;
171
172 signal(signum: number, handler: (signum: number) => void): void;
173 serve<T extends HttpContext = HttpContext>(port: number, handler?: (ctx: T) => void | Promise<void>): number;
174}
175
176declare const Ant: AntStatic;