hackmud-script-manager 0.20.4-75a0f8e → 0.20.4-7c74974

Sign up to get free protection for your applications and to get access to all the features.
package/env.d.ts CHANGED
@@ -1,118 +1,80 @@
1
- type Replace<T, R> =
2
- Omit<
3
- T,
4
- Extract<keyof R, keyof T>
5
- > & R
6
-
1
+ type Replace<A, B> = Omit<A, keyof B> & B
7
2
  type ScriptSuccess<T = object> = { ok: true } & T
8
-
9
- type ScriptFailure = {
10
- ok: false
11
- msg?: string
12
- }
13
-
3
+ type ScriptFailure = { ok: false, msg?: string }
14
4
  type ScriptResponse<T = object> = ScriptSuccess<T> | ScriptFailure
15
5
  type ErrorScripts = Record<string, () => ScriptFailure>
16
6
 
17
- type Subscripts =
18
- Record<
19
- string,
20
- Record<string, (...args: any) => any>
21
- > & {
22
- accts: ErrorScripts
23
- autos: ErrorScripts
24
- bbs: ErrorScripts
25
- chats: ErrorScripts
26
- corps: ErrorScripts
27
- escrow: ErrorScripts
28
- gui: ErrorScripts
29
- kernel: ErrorScripts
30
- market: ErrorScripts
31
- scripts: ErrorScripts
32
- sys: ErrorScripts
33
- trust: ErrorScripts
34
- users: ErrorScripts
35
- }
7
+ type AllOptional<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? true : false }[keyof T]
36
8
 
37
- interface PlayerFullsec {}
9
+ type Scriptor<Args = unknown, Ret = unknown> = {
10
+ name: string
11
+ call: AllOptional<Args> extends true ? (args?: Args) => Ret : (args: Args) => Ret
12
+ }
38
13
 
39
- interface PlayerHighsec {}
14
+ type Subscripts = Record<string, Record<string, (...args: any) => any>> & {
15
+ accts: ErrorScripts
16
+ autos: ErrorScripts
17
+ bbs: ErrorScripts
18
+ chats: ErrorScripts
19
+ corps: ErrorScripts
20
+ escrow: ErrorScripts
21
+ gui: ErrorScripts
22
+ kernel: ErrorScripts
23
+ market: ErrorScripts
24
+ scripts: ErrorScripts
25
+ sys: ErrorScripts
26
+ trust: ErrorScripts
27
+ users: ErrorScripts
28
+ }
40
29
 
30
+ interface PlayerFullsec {}
31
+ interface PlayerHighsec {}
41
32
  interface PlayerMidsec {}
42
-
43
33
  interface PlayerLowsec {}
44
-
45
34
  interface PlayerNullsec {}
46
35
 
47
- type UpgradeCore = {
36
+ type UpgradeRarityString = "`0noob`" | "`1kiddie`" | "`2h4x0r`" | "`3h4rdc0r3`" | "`4|_|b3|2`" | "`531337`"
37
+ type UpgradeRarityNumber = 0 | 1 | 2 | 3 | 4 | 5;
38
+ type UpgradeRarity = UpgradeRarityString | UpgradeRarityNumber;
39
+
40
+ type UpgradeBase = {
48
41
  name: string
49
42
  type: "lock" | "script_space" | "chat" | "script" | "tool" | "bot_brain" | "glam"
50
43
  up_class?: -1 | 0 | 1 | 2 | 3
51
44
  tier: 1 | 2 | 3 | 4
52
- rarity: 0 | 1 | 2 | 3 | 4 | 5
45
+ rarity: UpgradeRarityNumber
53
46
  i: number
54
47
  loaded: boolean
55
48
  sn: string
56
49
  description: string
57
50
  }
58
51
 
59
- type Upgrade = UpgradeCore & Record<string, null | boolean | number | string>
52
+ type Upgrade = UpgradeBase & Record<string, null | boolean | number | string>
60
53
 
61
- type CLIUpgrade = Omit<UpgradeCore, `rarity`> & {
54
+ type CliUpgrade = Omit<UpgradeBase, `rarity`> & {
62
55
  [x: string]: null | boolean | number | string
63
- rarity: "`0noob`" | "`1kiddie`" | "`2h4x0r`" | "`3h4rdc0r3`" | "`4|_|b3|2`" | "`531337`"
56
+ rarity: UpgradeRarityString
64
57
  }
65
58
 
66
- type UsersTopItem<R> = {
67
- rank: R
68
- name: string
69
- last_activity: string
70
- balance: string
71
- }
72
-
73
- type CorpsTopItem<R> = {
74
- rank: R
75
- name: string
76
- worth: string
77
- }
59
+ type UsersTopItem<R> = { rank: R, name: string, last_activity: string, balance: string }
60
+ type CorpsTopItem<R> = { rank: R, name: string, worth: string }
78
61
 
79
62
  type CorpsTop = [
80
- CorpsTopItem<1>,
81
- CorpsTopItem<2>,
82
- CorpsTopItem<3>,
83
- CorpsTopItem<4>,
84
- CorpsTopItem<5>,
85
- CorpsTopItem<6>,
86
- CorpsTopItem<7>,
87
- CorpsTopItem<8>,
88
- CorpsTopItem<9>,
89
- CorpsTopItem<10>
63
+ CorpsTopItem<1>, CorpsTopItem<2>, CorpsTopItem<3>, CorpsTopItem<4>, CorpsTopItem<5>,
64
+ CorpsTopItem<6>,CorpsTopItem<7>, CorpsTopItem<8>, CorpsTopItem<9>, CorpsTopItem<10>
90
65
  ]
91
66
 
92
67
  type Fullsec = Subscripts & PlayerFullsec & {
93
68
  accts: {
94
- /**
95
- * **FULLSEC**
96
- *
97
- * @returns GC balance of script owner
98
- */
99
- balance_of_owner: () => number
100
-
101
- /**
102
- * **FULLSEC**
103
- */
104
- xfer_gc_to_caller: (args: {
105
- amount: number | string
106
- memo?: string | undefined
107
- }) => ScriptResponse
69
+ /** **FULLSEC** @returns GC balance of script owner. */ balance_of_owner: () => number
70
+
71
+ /** **FULLSEC** */
72
+ xfer_gc_to_caller: (args: { amount: number | string, memo?: string | undefined }) => ScriptResponse
108
73
  }
109
74
 
110
75
  bbs: {
111
76
  read: () => {
112
- boards: {
113
- title: string
114
- slug: string
115
- }[]
77
+ boards: { title: string, slug: string }[]
116
78
 
117
79
  posts: {
118
80
  vote_count: number
@@ -134,84 +96,43 @@ type Fullsec = Subscripts & PlayerFullsec & {
134
96
  }
135
97
 
136
98
  chats: {
137
- /**
138
- * **FULLSEC**
139
- *
140
- * @summary Create a new chat channel
141
- *
142
- * @description This script lets you create a new chat channel.
143
- * You cannot create a channel that already exists (including any of the default ports from `0000` to `FFFF`).
144
- * If you do not supply a password, anyone can join your channel (but the channel name is not displayed anywhere, so they would have to discover it in some way first).
145
- */
99
+ /** **FULLSEC**
100
+ * @summary Create a new chat channel.
101
+ * @description This script lets you create a new chat channel.
102
+ * You cannot create a channel that already exists (including any of the default ports from `0000` to `FFFF`).
103
+ * If you do not supply a password, anyone can join your channel (but the channel name is not displayed
104
+ * anywhere, so they would have to discover it in some way first). */
146
105
  create: ((args: {
147
- /**
148
- * The name of the channel to create
149
- */
150
- name: string
151
-
152
- /**
153
- * The password to secure the channel with
154
- */
155
- password?: string
106
+ /** The name of the channel to create. */ name: string
107
+ /** The password to secure the channel with. */ password?: string
156
108
  }) => ScriptResponse) & ((args: {
157
- /**
158
- * The name of the channel to create
159
- */
160
- c: string
161
-
162
- /**
163
- * The password to secure the channel with
164
- */
165
- password?: string
109
+ /** The name of the channel to create. */ c: string
110
+ /** The password to secure the channel with. */ password?: string
166
111
  }) => ScriptResponse)
167
112
 
168
- /**
169
- * **FULLSEC**
170
- *
171
- * @summary Send a chat message to a channel
172
- *
173
- * @description This script lets you send a message to the specified channel.
174
- * You must have joined the channel, and you will see your own message (unlike chats.tell).
175
- */
113
+ /** **FULLSEC**
114
+ * @summary Send a chat message to a channel.
115
+ * @description This script lets you send a message to the specified channel.
116
+ * You must have joined the channel, and you will see your own message (unlike chats.tell). */
176
117
  send: (args: {
177
- /**
178
- * The channel to send the message to.
179
- */
180
- channel: string
181
-
182
- /**
183
- * The message to send
184
- */
185
- msg: string
118
+ /** The channel to send the message to. */ channel: string
119
+ /** The message to send. */ msg: string
186
120
  }) => ScriptResponse
187
121
 
188
- /**
189
- * **FULLSEC**
190
- *
191
- * @summary Send a chat message to a specific user
192
- *
193
- * @description This script lets you send a message to the specified user directly.
194
- * You can message any user, you only need their username.
195
- * Note that you will not be able to see your message after it is sent (though many chat scripts based on chats.tell also send the message to you to work around this limitation).
196
- */
122
+ /** **FULLSEC**
123
+ * @summary Send a chat message to a specific user.
124
+ * @description This script lets you send a message to the specified user directly.
125
+ * You can message any user, you only need their username.
126
+ * Note that you will not be able to see your message after it is sent (though many chat scripts based on
127
+ * chats.tell also send the message to you to work around this limitation). */
197
128
  tell: (args: {
198
- /**
199
- * The username to send the message to
200
- */
201
- to: string
202
-
203
- /**
204
- * The message to send
205
- */
206
- msg: string
129
+ /** The username to send the message to. */ to: string
130
+ /** The message to send. */ msg: string
207
131
  }) => ScriptResponse
208
132
  }
209
133
 
210
134
  escrow: {
211
- /**
212
- * **FULLSEC**
213
- */
214
- charge: (args: {
135
+ /** **FULLSEC** */ charge: (args: {
215
136
  cost: number | string
216
137
  is_unlim?: boolean
217
138
  }) => null | ScriptFailure
@@ -228,405 +149,266 @@ type Fullsec = Subscripts & PlayerFullsec & {
228
149
  }
229
150
 
230
151
  market: {
231
- /**
232
- * **FULLSEC**
233
- */
234
- browse: ((args: {
235
- seller: string
236
- listed_before: number
237
- listed_after: number
238
- cost: number | string
239
- } & CLIUpgrade) => {
240
- i: string
241
- name: string
242
- rarity: Upgrade["rarity"]
243
- cost: number
244
- }[] | ScriptFailure) & (<I extends string>(args: { i: I }) => {
245
- i: I
246
- seller: string
247
- cost: number
248
- count: number
249
- description: string
250
- upgrade: Upgrade
251
- no_notify: boolean
252
- } | ScriptFailure) & (<I extends string[]>(args: { i: I }) => {
253
- i: I
254
- seller: string
255
- cost: number
256
- count: number
257
- description: string
258
- upgrade: Upgrade
259
- no_notify: boolean
260
- }[] | ScriptFailure)
152
+ /** **FULLSEC** */ browse: {
153
+ (args:
154
+ Partial<{
155
+ seller: string | MongoQuerySelector<string>,
156
+ listed_before: number | MongoQuerySelector<number>,
157
+ listed_after: number,
158
+ cost: number | MongoQuerySelector<number> | string,
159
+ rarity: UpgradeRarityNumber | MongoQuerySelector<UpgradeRarityNumber>,
160
+ name: string | MongoQuerySelector<string>
161
+ } & Omit<{
162
+ [k in keyof CliUpgrade]: CliUpgrade[k] | MongoQuerySelector<CliUpgrade[k]>
163
+ }, "rarity">>
164
+ ): { i: string, name: string, rarity: Upgrade["rarity"], cost: number }[] | ScriptFailure
165
+
166
+ <I extends string>(args: { i: I }): {
167
+ i: I
168
+ seller: string
169
+ cost: number
170
+ count: number
171
+ description: string
172
+ upgrade: Upgrade
173
+ no_notify: boolean
174
+ } | ScriptFailure
175
+
176
+ <I extends string[]>(args: { i: I }): {
177
+ i: I
178
+ seller: string
179
+ cost: number
180
+ count: number
181
+ description: string
182
+ upgrade: Upgrade
183
+ no_notify: boolean
184
+ }[] | ScriptFailure
185
+ }
261
186
  }
262
187
 
263
188
  scripts: {
264
- /**
265
- * **FULLSEC**
266
- */
267
- fullsec: ((args?: object) => string[]) & ((args: { sector: string }) => string[] | ScriptFailure)
268
-
269
- /**
270
- * **FULLSEC**
271
- */
272
- get_access_level: (args: { name: string }) => {
273
- public: boolean
274
- hidden: boolean
275
- trust: boolean
276
- } | ScriptFailure
277
-
278
- /**
279
- * **FULLSEC**
280
- */
281
- get_level: (args: { name: string }) => 0 | 1 | 2 | 3 | 4 | ScriptFailure
282
-
283
- /**
284
- * **FULLSEC**
285
- */
286
- highsec: ((args?: object) => string[]) & ((args: { sector: string }) => string[] | ScriptFailure)
287
-
288
- /**
289
- * **FULLSEC**
290
- */
291
- lowsec: ((args?: object) => string[]) & ((args: { sector: string }) => string[] | ScriptFailure)
292
-
293
- /**
294
- * **FULLSEC**
295
- */
296
- midsec: ((args?: object) => string[]) & ((args: { sector: string }) => string[] | ScriptFailure)
297
-
298
- /**
299
- * **FULLSEC**
300
- */
301
- nullsec: ((args?: object) => string[]) & ((args: { sector: string }) => string[] | ScriptFailure)
302
-
303
- /**
304
- * **FULLSEC**
305
- */
306
- trust: () => string[]
307
-
308
- /**
309
- * FULLSEC
310
- *
311
- * @returns a code library containing useful helper functions you can use in your scripts.
312
- */
189
+ /** **FULLSEC** */ get_access_level: (args: { name: string }) =>
190
+ { public: boolean, hidden: boolean, trust: boolean } | ScriptFailure
191
+
192
+ /** **FULLSEC** */ get_level: (args: { name: string }) => 0 | 1 | 2 | 3 | 4 | ScriptFailure
193
+ /** **FULLSEC** */ fullsec: { (): string[], (args: { sector: string }): string[] | ScriptFailure }
194
+ /** **FULLSEC** */ highsec: Fullsec["scripts"]["fullsec"]
195
+ /** **FULLSEC** */ lowsec: Fullsec["scripts"]["fullsec"]
196
+ /** **FULLSEC** */ midsec: Fullsec["scripts"]["fullsec"]
197
+ /** **FULLSEC** */ nullsec: Fullsec["scripts"]["fullsec"]
198
+ /** **FULLSEC** */ trust: () => string[]
199
+
200
+ /** FULLSEC
201
+ * @returns A code library containing useful helper functions you can use in your scripts. */
313
202
  lib: () => {
314
203
  ok: () => ScriptSuccess
204
+ not_impl: () => { ok: false, msg: "Not Implemented." }
205
+ /** Append `message` to the current script run's log. */ log: (message: any) => void
206
+ /** @returns All messages added using `scripts.lib().log` during this script run. */ get_log: () => string[]
315
207
 
316
- not_impl: () => {
317
- ok: false
318
- msg: "Not Implemented."
319
- }
320
- /**
321
- * Append `message` to the current script run's log.
322
- */
323
- log: (message: any) => void
324
- /**
325
- * @returns all messages added using `scripts.lib().log` during this script run
326
- */
327
- get_log: () => string[]
328
- /**
329
- * @returns a random integer in the range [min, max) generated using `rng` (defaults to `Math.random`)
330
- */
208
+ /** @returns A random integer in the range [min, max) generated using `rng` (defaults to `Math.random`). */
331
209
  rand_int: (min: number, max: number, rng?:()=>number) => number
332
- /**
333
- * @returns the value of `value`, bounded by the range [`floor`, `ceil`]
334
- */
210
+
211
+ /** @returns `floor` if `value` is less than `floor`, `ceil` if `value` is more than `ceil`, otherwise
212
+ * `value`. */
335
213
  clamp: (value: number, floor: number, ceil: number) => number
336
- /**
337
- * Linear interpolation function.
338
- * @returns a number <`amount*100`>% of the way from `start` to `stop`
339
- */
214
+
215
+ /** Linear interpolation function.
216
+ * @returns A number between `start` and `stop` using `amount` as a percent. */
340
217
  lerp: (amount: number, start: number, stop: number) => number
341
- /**
342
- * @returns a random element from `array`, selected with a random number generated using `rng` (defaults to `Math.random`)
343
- */
218
+
219
+ /** @returns A random element from `array`, selected with a random number generated using `rng`
220
+ * (defaults to `Math.random`). */
344
221
  sample: (array: any[], rng?: ()=>number) => any
345
- /**
346
- * @returns whether two MongoDB ObjectIds are equivalent
347
- */
348
- are_ids_eq: (id1: any, id2: any) => boolean
349
- /**
350
- * Convert a MongoDB ObjectId to a string
351
- */
352
- id_to_str: (id: string | {$oid: string}) => any
353
- /**
354
- * @returns whether `value` is a boolean primitive
355
- */
356
- is_bool: (value: any) => value is boolean
357
- /**
358
- * @returns whether `value` is an object or `null`
359
- */
222
+
223
+ /** @returns Whether two MongoDB `ObjectId`s are equivalent. */ are_ids_eq: (id1: any, id2: any) => boolean
224
+ /** Convert a MongoDB `ObjectId` to a string. */ id_to_str: (id: string | {$oid: string}) => any
225
+ /** @returns Whether `value` is a boolean primitive. */ is_bool: (value: any) => value is boolean
226
+ /** @returns Whether `value` is an object or `null`. */
360
227
  is_obj: (value: any) => value is Record<string, unknown> | null
361
- /**
362
- * @returns whether `value` is a string
363
- */
364
- is_str: (value: any) => value is string
365
- /**
366
- * @returns whether `value` is a number
367
- */
368
- is_num: (value: any) => value is number
369
- /**
370
- * @returns whether `value` is an integer
371
- */
372
- is_int: (value: any) => value is number
373
- /**
374
- * @returns whether `value` is a negative number
375
- */
376
- is_neg: (value: any) => value is number
377
- /**
378
- * @returns whether `value` is an array
379
- */
380
- is_arr: (value: any) => value is unknown[]
381
- /**
382
- * @returns whether `value` is a function
383
- */
384
- is_func: (value: any) => value is (...args: any[]) => unknown
385
- /**
386
- * @returns whether `value` is not `undefined`
387
- */
388
- is_def: (value: any) => boolean
389
- /**
390
- * @returns whether `name` is a valid in-game username
391
- */
392
- is_valid_name: (name: string) => boolean
393
- /**
394
- * @returns the string representation of `value`
395
- */
396
- dump: (value: { toString: () => string }) => string
397
- /**
398
- * @returns a deep clone of `object`
399
- */
400
- clone: <T extends object>(object: T) => T
401
- /**
402
- * Applies all key-value pairs from `obj2` to `obj1`, overwriting if necessary.
403
- */
228
+ /** @returns Whether `value` is a string. */ is_str: (value: any) => value is string
229
+ /** @returns Whether `value` is a number. */ is_num: (value: any) => value is number
230
+ /** @returns Whether `value` is an integer. */ is_int: (value: any) => value is number
231
+ /** @returns Whether `value` is a negative number. */ is_neg: (value: any) => value is number
232
+ /** @returns Whether `value` is an array. */ is_arr: (value: any) => value is unknown[]
233
+ /** @returns Whether `value` is a function. */ is_func: (value: any) => value is (...args: any[]) => unknown
234
+ /** @returns Whether `value` is not `undefined`. */ is_def: (value: any) => boolean
235
+ /** @returns Whether `name` is a valid in-game username. */ is_valid_name: (name: string) => boolean
236
+ /** @returns The string representation of `value`. */ dump: (value: { toString: () => string }) => string
237
+ /** @returns A deep clone of `object`. */ clone: <T extends object>(object: T) => T
238
+
239
+ /** Applies all key-value pairs from `obj2` to `obj1`, overwriting if necessary. */
404
240
  merge: <F extends object, S extends object>(obj1: F, obj2: S) => F & S
405
- /**
406
- * @returns an array of `object`'s values
407
- */
408
- get_values: (object: object) => any[]
409
- /**
410
- * @returns a numeric hash of `string`
411
- */
412
- hash_code: (string: string) => number
413
- /**
414
- * @returns a numeric hash of `string`
415
- */
416
- xmur3: (string: string) => number
417
- /**
418
- * @returns function that generates random floats in the range [0,1] based on the numerical seeds
419
- */
241
+
242
+ /** @returns An array of `object`'s values */ get_values: (object: object) => any[]
243
+ /** @returns A numeric hash of `string`. */ hash_code: (string: string) => number
244
+
245
+ /** @returns A numeric hash of `string`. */ xmur3: (string: string) => number
246
+
247
+ /** @returns Function that generates random floats in the range 0-1 based on the numerical seeds. */
420
248
  sfc32: (seed1: number, seed2: number, seed3: number, seed4: number) => () => number
421
- /**
422
- * @returns function that generates random floats in the range [0,1] based on the numerical seed
423
- */
249
+
250
+ /** @returns Function that generates random floats in the range 0-1 based on the numerical seed. */
424
251
  mulberry32: (seed: number) => () => number
425
- /**
426
- * @returns function that generates random floats in the range [0,1] based on the numerical seeds
427
- */
252
+
253
+ /** @returns Function that generates random floats in the range 0-1 based on the numerical seeds. */
428
254
  xoshiro128ss: (seed1: number, seed2: number, seed3: number, seed4: number) => () => number
429
- /**
430
- * @returns function that generates random floats in the range [0,1] based on the numerical seed
431
- */
255
+
256
+ /** @returns Function that generates random floats in the range 0-1 based on the numerical seed. */
432
257
  JSF: (seed: number) => () => number
433
- /**
434
- * @returns function that generates random floats in the range [0,1] based on the numerical seed
435
- */
258
+
259
+ /** @returns Function that generates random floats in the range 0-1 based on the numerical seed. */
436
260
  LCG: (seed: number) => () => number
437
- /**
438
- * Converts a number to a GC string of the form `"1M5K20GC"`.
439
- */
440
- to_gc_str: (number: number) => string
441
- /**
442
- * Converts a string similar to `"1M5K20GC"` to an equivalent numerical representation.
443
- */
261
+
262
+ /** Converts a number to a GC string of the form `"1M5K20GC"`. */ to_gc_str: (number: number) => string
263
+
264
+ /** Converts a string similar to `"1M5K20GC"` to an equivalent numerical representation. */
444
265
  to_gc_num: (string: string) => number | ScriptFailure
445
- /**
446
- * @returns a string of the form YYMMDD.HHMM derived from `date`
447
- */
448
- to_game_timestr: (date: Date) => string
266
+
267
+ /** @returns A string of the form YYMMDD.HHMM derived from `date`. */ to_game_timestr: (date: Date) => string
268
+
449
269
  corruption_chars: "¡¢Á¤Ã¦§¨©ª"
450
- /**
451
- * A list of unique color codes to be used with hackmud's color formatting syntax.
452
- * Does not include numeric codes, which are duplicates of some alphabetic codes.
453
- */
270
+
271
+ /** A list of unique color codes to be used with hackmud's color formatting syntax.
272
+ * Does not include numeric codes, which are duplicates of some alphabetic codes. */
454
273
  colors: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
455
- /**
456
- * Used by `scripts.lib().corrupt` to determine the frequency of corruption.
457
- */
274
+
275
+ /** Used by `$fs.scripts.lib().corrupt()` to determine the frequency of corruption. */
458
276
  corruptions: [ 0, 1, 1.5, 2.5, 5 ]
459
- /**
460
- * Adds colored corruption characters to `text`, with frequency determined by `amount`.
461
- */
277
+
278
+ /** Adds colored corruption characters to `text`, with frequency determined by `amount`. */
462
279
  corrupt: (text: string | string[], amount: 0 | 1 | 2 | 3 | 4) => string
463
- /**
464
- * @returns the first <`length`> characters of `string`, or the original string if it is shorter than `length`
465
- */
280
+
281
+ /** @returns The first `length` characters of `string`, or the original string if it is shorter than
282
+ * `length`. */
466
283
  cap_str_len: (string: string, length: number) => string
467
- /**
468
- * Applies `func` to each element in `array` and returns the original array.
469
- */
470
- each: <T>(array: T[], func: (index: number, value: T) => void) => T[]
471
- /**
472
- * @returns a new array containing the elments of `array` for which `func` returns `true`
473
- */
474
- select: <T>(array: T[], func: (index: number, value: T) => boolean) => T[]
475
- /**
476
- * @returns the number of elements in `array` for which `func` returns `true`
477
- */
478
- count: <T>(array: T[], func: (index: number, value: T) => boolean) => number
479
- /**
480
- * @returns the first element in `array` for which `func` returns `true`
481
- */
482
- select_one: <T>(array: T[], func: (index: number, value: T) => boolean) => T
483
- /**
484
- * @returns a new array composed of the result of applying `func` to each element of the original array in order
485
- */
486
- map: <T, U>(array: T[], func: (index: number, value: T) => U) => U[]
487
- /**
488
- * @returns a new object derived from `obj` with only the keys specified in `keys`
489
- */
284
+
285
+ /** Applies `callback` to each element in `array` and returns the original array. */
286
+ each: <T>(array: T[], callback: (index: number, value: T) => void) => T[]
287
+
288
+ /** @returns A new array containing the elments of `array` for which `callback` returns `true`. */
289
+ select: <T>(array: T[], callback: (index: number, value: T) => boolean) => T[]
290
+
291
+ /** @returns The number of elements in `array` for which `callback` returns `true`. */
292
+ count: <T>(array: T[], callback: (index: number, value: T) => boolean) => number
293
+
294
+ /** @returns The first element in `array` for which `callback` returns `true`. */
295
+ select_one: <T>(array: T[], callback: (index: number, value: T) => boolean) => T
296
+
297
+ /** @returns A new array composed of the result of applying `callback` to each element of the original array
298
+ * in order. */
299
+ map: <T, U>(array: T[], callback: (index: number, value: T) => U) => U[]
300
+
301
+ /** @returns A new object derived from `obj` with only the keys specified in `keys`. */
490
302
  pick: (obj: object, keys: string[]) => any
491
- /**
492
- * @returns an array with the elements from `array` in a random order
493
- */
494
- shuffle: <T>(array: T[]) => T[]
495
- /**
496
- * Comparison function for sorting arbitrary values in ascending order using builtin comparison operators.
497
- */
303
+
304
+ /** @returns An array with the elements from `array` in a random order. */ shuffle: <T>(array: T[]) => T[]
305
+
306
+ /** Comparison function for sorting arbitrary values in ascending order using builtin comparison operators.
307
+ */
498
308
  sort_asc: (one: any, two: any) => 1 | -1 | 0
499
- /**
500
- * Comparison function for sorting arbitrary values in descending order using builtin comparison operators.
501
- */
309
+
310
+ /** Comparison function for sorting arbitrary values in descending order using builtin comparison operators.
311
+ */
502
312
  sort_desc: (one: any, two: any) => 1 | -1 | 0
503
- /**
504
- * Comparison function for sorting numbers in ascending order.
505
- */
313
+
314
+ /** Comparison function for sorting numbers in ascending order. */
506
315
  num_sort_asc: (one: number, two: number) => 1 | -1 | 0
507
- /**
508
- * Comparison function for sorting numbers in descending order.
509
- */
316
+
317
+ /** Comparison function for sorting numbers in descending order. */
510
318
  num_sort_desc: (one: number, two: number) => 1 | -1 | 0
511
- /**
512
- * @returns the value and the index of the largest number in `array` as `[maxVal, maxIdx]`
513
- */
514
- max_val_index: (array: number[]) => number[]
515
- /**
516
- * @returns a new `Date` equivalent to `date.getTime() + add_ms`
517
- */
319
+
320
+ /** @returns The value and the index of the largest number in `array`. */
321
+ max_val_index: (array: number[]) => [ largestValue: number, index: number ]
322
+
323
+ /** @returns A new `Date` equivalent to `date.getTime() + add_ms`. */
518
324
  add_time: (date: Date, add_ms: number) => Date
519
- /**
520
- * String representations of the in-game seclevels.
521
- */
325
+
326
+ /** Array of strings representing seclevels. */
522
327
  security_level_names: [ "NULLSEC", "LOWSEC", "MIDSEC", "HIGHSEC", "FULLSEC" ]
523
- /**
524
- * @returns the string name of a numeric security level
525
- */
328
+
329
+ /** @returns The string name of a numeric security level. */
526
330
  get_security_level_name: (security_level: number) => any
527
- /**
528
- * @param result the return value of a call to `#db.i` or `#db.r`
529
- * @param nModified the expected value of `result.nModified`
530
- * @returns whether the database operation failed
531
- */
532
- dbu_result_failed: (result: ReturnType<typeof $db.u | typeof $db.u1 | typeof $db.us>, nModified?: number) => boolean
533
- /**
534
- * @param result the return value of a call to `#db.i` or `#db.r`
535
- * @param n the expected value of `result.n`
536
- * @returns whether the database operation failed
537
- */
331
+
332
+ /** @param result The return value of a call to `$db.i()` or `$db.r()`.
333
+ * @param nModified The expected value of `result.nModified`.
334
+ * @returns Whether the database operation failed. */
335
+ dbu_result_failed: (result: ReturnType<typeof $db.u | typeof $db.u1 | typeof $db.us>, nModified?: number) =>
336
+ boolean
337
+
338
+ /** @param result The return value of a call to `$db.i()` or `$db.r()`.
339
+ * @param n The expected value of `result.n`.
340
+ * @returns Whether the database operation failed. */
538
341
  dbir_result_failed: (result: ReturnType<typeof $db.i | typeof $db.r>, n?: number) => boolean
539
- /**
540
- * @returns a random string of length `length` on the alphabet [a-z0-9]
541
- */
342
+
343
+ /** @returns A random string of length `length` using lowercase letters and numbers. */
542
344
  create_rand_string: (length: number) => string
543
- /**
544
- * @returns the user half `x` of a fully-qualified script name `x.y`
545
- */
345
+
346
+ /** @returns The user half `x` of a fully-qualified script name `x.y`. */
546
347
  get_user_from_script: (script_name: string) => string
547
- /**
548
- * @returns the script half `y` of a fully-qualified script name `x.y`
549
- */
348
+
349
+ /** @returns The script half `y` of a fully-qualified script name `x.y`. */
550
350
  get_scriptname_from_script: (name: string) => string
551
- /**
552
- * Determines whether to treat this run as a subscript, based either on the presence of `calling_script` in `context`,
553
- * or the explicit passing of `is_script:true` in `args`.
554
- */
351
+
352
+ /** Determines whether to treat this run as a subscript, based either on the presence of `calling_script` in
353
+ * `context`, or the explicit passing of `is_script: true` in `args`. */
555
354
  is_script: (context: Context, args: any) => boolean
556
- /**
557
- * @returns whether the script is being called by its owner
558
- */
355
+
356
+ /** @returns Whether the script is being called by its owner. */
559
357
  caller_is_owner: (context: Context) => boolean
560
- /**
561
- * Removes consecutive duplicate elements from an array.
562
- * @example
563
- * ```js
564
- * const arr = [1, 2, 2, 3, 2]
565
- * return #fs.scripts.lib().uniq(arr)
566
- * // [1, 2, 3, 2]
567
- * ```
568
- */
569
- uniq: (array: T[]) => T[]
570
- /**
571
- * Sorts an array of numbers or number-coercible strings in descending order.
572
- */
358
+
359
+ /** Removes consecutive duplicate elements from an array.
360
+ * @example
361
+ * const { uniq } = $fs.scripts.lib()
362
+ * const arr = [ 1, 2, 2, 3, 2 ]
363
+ *
364
+ * $D(uniq(arr)) // [ 1, 2, 3, 2 ] */
365
+ uniq: <T>(array: T[]) => T[]
366
+
367
+ /** Sorts an array of numbers or number-coercible strings in descending order. */
573
368
  u_sort_num_arr_desc: <T>(array: T[]) => T[]
574
- /**
575
- * BUGGED: Creates a new string of length `length` by repeating `pad_char`.
576
- */
369
+
370
+ /** BUGGED: Creates a new string of length `length` by repeating `pad_char`. */
577
371
  ljust: (input: string, length: number, pad_char?: string) => string
578
- /**
579
- * Add characters from `pad_char` to the left of `input` until it reaches length `length`.
580
- */
372
+
373
+ /** Add characters from `pad_char` to the left of `input` until it reaches length `length`. */
581
374
  rjust: (input: string, length: number, pad_char?: string) => string
582
- /**
583
- * @returns a string with the entries from `strings` split into evenly spaced columns,
584
- * organized donward and then rightward, to fit the current user's terminal
585
- */
375
+
376
+ /** @returns A string with the entries from `strings` split into evenly spaced columns, organized donward
377
+ * and then rightward, to fit the current user's terminal. */
586
378
  columnize: (strings: string[]) => string
587
- /**
588
- * Takes two newline-separated strings and formats a new string where they appear in columns, separated by `space`.
589
- * @example
590
- * ```js
591
- * const str1 = "one\ntwo\nthree"
592
- * const str2 = "four\nfive\nsix"
593
- * return $fs.scripts.lib().side_by_side(str1, str2, "|")
594
- * // one|four\n
595
- * // two|five\n
596
- * // three|six
597
- * ```
598
- */
599
- side_by_side: (str1: string, str2: string, space?:string) => string
600
- /**
601
- * @returns whether enough time remains in the script execution window to satisfy `time_left`
602
- */
379
+
380
+ /** Takes two newline-separated strings and formats a new string where they appear in columns, separated by
381
+ * `space`.
382
+ * @example
383
+ * const { side_by_side } = $fs.scripts.lib()
384
+ * const str1 = "one\ntwo\nthree"
385
+ * const str2 = "four\nfive\nsix"
386
+ *
387
+ * $D(side_by_side(str1, str2, "|"))
388
+ * // one|four\n
389
+ * // two|five\n
390
+ * // three|six */
391
+ side_by_side: (str1: string, str2: string, space?: string) => string
392
+
393
+ /** @returns Whether enough time remains in the script execution window to satisfy `time_left`. */
603
394
  can_continue_execution: (time_left: number) => boolean
604
- /**
605
- * @returns a human-readable error object when not enough time remains in the script execution window to satisfy `time_left`
606
- */
607
- can_continue_execution_error: (time_left: number, name?:string) => {ok:false, msg: string}
608
- date: typeof Date
609
- /**
610
- * @returns current date, equivalent to `new Date()`
611
- */
612
- get_date: () => Date
613
- /**
614
- * @returns time since the epoch, equivalent to `Date.now()`
615
- */
616
- get_date_utcsecs: () => number
617
- /**
618
- * The amount of milliseconds in a single day.
619
- */
620
- one_day_ms: 86_400_000
395
+
396
+ /** @returns A human-readable error object when not enough time remains in the script execution window to
397
+ * satisfy `time_left`. */
398
+ can_continue_execution_error: (time_left: number, name?: string) => { ok:false, msg: string }
399
+
400
+ /** @returns Current date, equivalent to `new Date()`. */ get_date: () => Date
401
+ /** @returns time since the epoch, equivalent to `Date.now()`. */ get_date_utcsecs: () => number
402
+ /** The amount of milliseconds in a single day. */ one_day_ms: 86_400_000
403
+
621
404
  is_not_today: (date: Date) => boolean
622
- /**
623
- * @returns the number of days that have passed between `d2` and `d1`
624
- */
405
+
406
+ /** @returns The number of days that have passed between `d2` and `d1` */
625
407
  utc_day_diff: (d1: Date, d2: Date) => number
626
- /**
627
- * @returns the number of days elapsed since `date` as a string, e.g. "<n> days"
628
- */
408
+
409
+ /** @returns The number of days elapsed since `date` as a string, e.g. "<n> days" */
629
410
  utc_days_ago_str: (date: Date) => string
411
+
630
412
  math: typeof Math
631
413
  array: typeof Array
632
414
  parse_int: typeof parseInt
@@ -634,361 +416,200 @@ type Fullsec = Subscripts & PlayerFullsec & {
634
416
  json: typeof JSON
635
417
  number: typeof Number
636
418
  object: typeof Object
419
+ date: typeof Date
637
420
  }
638
421
 
639
- /**
640
- * **FULLSEC**
641
- */
642
- quine: () => string
422
+ /** **FULLSEC** */ quine: () => string
643
423
  }
644
424
 
645
425
  sys: {
646
426
  init: never
647
427
 
648
- /**
649
- * **FULLSEC**
650
- */
651
- upgrades_of_owner: (<
652
- F extends Partial<Upgrade & { loaded: boolean }> = object
653
- >(args?: { filter?: F, full?: false }) => (
654
- Omit<
655
- Pick<UpgradeCore, "tier" | "rarity" | "name" | "type" | "i" | "loaded">,
656
- keyof F
657
- > & Pick<F, "tier" | "rarity" | "name" | "type" | "i" | "loaded">
658
- )[] | ScriptFailure) & (<
659
- F extends Partial<Upgrade & { loaded: boolean }> = object
660
- >(args: { filter?: F, full: true }) => (
661
- Omit<UpgradeCore, keyof F> & F & Record<string, null | boolean | number | string>
662
- )[] | ScriptFailure) & (<I extends number>(args: { i: I }) => (
663
- Omit<UpgradeCore, "i"> & { [x: string]: null | boolean | number | string, i: I }
664
- ) | ScriptFailure)
665
-
666
- /**
667
- * **FULLSEC**
668
- */
669
- xfer_upgrade_to_caller: ((args: {
670
- i: number | number[]
671
- memo?: string
672
- }) => ScriptResponse) & ((args: {
673
- sn: string | string[]
674
- memo?: string
675
- }) => ScriptResponse)
428
+ /** **FULLSEC** */
429
+ upgrades_of_owner: {
430
+ <F extends Partial<Upgrade & { loaded: boolean }> = object>(args?: { filter?: F, full?: false }): (
431
+ Omit<
432
+ Pick<UpgradeBase, "tier" | "rarity" | "name" | "type" | "i" | "loaded">,
433
+ keyof F
434
+ > & Pick<F, "tier" | "rarity" | "name" | "type" | "i" | "loaded">
435
+ )[] | ScriptFailure
436
+
437
+ <F extends Partial<Upgrade & { loaded: boolean }> = object>(args: { filter?: F, full: true }): (
438
+ Omit<UpgradeBase, keyof F> & F & Record<string, null | boolean | number | string>
439
+ )[] | ScriptFailure
440
+
441
+ <I extends number>(args: { i: I }): (
442
+ Omit<UpgradeBase, "i"> & { [x: string]: null | boolean | number | string, i: I }
443
+ ) | ScriptFailure
444
+ }
445
+
446
+ /** **FULLSEC** */
447
+ xfer_upgrade_to_caller: (args: ({ i: number | number[] } | { sn: string | string[] }) & { memo?: string }) =>
448
+ ScriptResponse
676
449
  }
677
450
 
678
451
  users: {
679
- /**
680
- * **FULLSEC**
681
- */
682
- active: () => number
683
-
684
- /**
685
- * **FULLSEC**
686
- */
687
- last_action: (args: { name: string | string[] }) => ({
688
- n: string
689
- t?: Date
690
- } | null)[]
691
-
692
- /**
693
- * **FULLSEC**
694
- */
452
+ /** **FULLSEC** */ active: () => number
453
+ /** **FULLSEC** */ last_action: (args: { name: string | string[] }) => ({ n: string, t?: Date } | null)[]
454
+
455
+ /** **FULLSEC** */
695
456
  top: () => [
696
- UsersTopItem<1>,
697
- UsersTopItem<2>,
698
- UsersTopItem<3>,
699
- UsersTopItem<4>,
700
- UsersTopItem<5>,
701
- UsersTopItem<6>,
702
- UsersTopItem<7>,
703
- UsersTopItem<8>,
704
- UsersTopItem<9>,
705
- UsersTopItem<10>
457
+ UsersTopItem<1>, UsersTopItem<2>, UsersTopItem<3>, UsersTopItem<4>, UsersTopItem<5>,
458
+ UsersTopItem<6>, UsersTopItem<7>, UsersTopItem<8>, UsersTopItem<9>, UsersTopItem<10>
706
459
  ]
707
460
  }
708
461
  }
709
462
 
710
463
  type Highsec = Fullsec & PlayerHighsec & {
711
464
  accts: {
712
- /**
713
- * **HIGHSEC**
714
- *
715
- * @returns GC balance as number if `is_script` is true (default)
716
- * @returns GC balance as string if `is_script` is false
717
- */
465
+ /** **HIGHSEC**
466
+ * @returns GC balance as number if `is_script` is true (default).
467
+ * @returns GC balance as string if `is_script` is false. */
718
468
  balance: ((args?: { is_script?: true }) => number) & ((args: { is_script: false }) => string)
719
469
 
720
- /**
721
- * **HIGHSEC**
722
- *
723
- * @returns transaction history according to filter
724
- * @returns if `is_script` is true (default), time property as Date object
725
- * @returns wraps transactions in object with msg, time property as string (game date format e.g. 201028.2147) if `is_script` is false
726
- */
727
- transactions: ((args?: {
728
- count?: number | "all"
729
- to?: string
730
- from?: string
731
- script?: string
732
- is_script?: true
733
- }) => {
734
- time: Date
735
- amount: number
736
- sender: string
737
- recipient: string
738
- script: string | null
739
- memo?: string
740
- }[]) & ((args: {
741
- count?: number | "all"
742
- to?: string
743
- from?: string
744
- script?: string
745
- is_script: false
746
- }) => {
747
- msg: string
748
- transactions: {
749
- time: string
750
- amount: string
470
+ /** **HIGHSEC**
471
+ * @returns Transaction history according to filter.
472
+ * @returns If `is_script` is true (default), time property as Date object.
473
+ * @returns Wraps transactions in object with msg, time property as string (game date format e.g. 201028.2147)
474
+ * if `is_script` is false. */
475
+ transactions: {
476
+ (args?: { count?: number | "all", to?: string, from?: string, script?: string, is_script?: true }): {
477
+ time: Date
478
+ amount: number
751
479
  sender: string
752
480
  recipient: string
753
481
  script: string | null
754
482
  memo?: string
755
483
  }[]
756
- })
484
+
485
+ (args: { count?: number | "all", to?: string, from?: string, script?: string, is_script: false }): {
486
+ msg: string
487
+ transactions: {
488
+ time: string
489
+ amount: string
490
+ sender: string
491
+ recipient: string
492
+ script: string | null
493
+ memo?: string
494
+ }[]
495
+ }
496
+ }
757
497
  }
758
498
 
759
499
  scripts: {
760
- /**
761
- * **HIGHSEC**
762
- */
763
- sys: () => string | string[]
500
+ /** **HIGHSEC** */ sys: () => string | string[]
764
501
  }
765
502
 
766
503
  sys: {
767
- /**
768
- * **HIGHSEC**
769
- */
770
- specs: () => string | ScriptFailure
771
-
772
- /**
773
- * **HIGHSEC**
774
- */
775
- status: () => {
776
- hardline: number
777
- tutorial: string
778
- breach: boolean
504
+ /** **HIGHSEC** */ specs: () => string | ScriptFailure
505
+ /** **HIGHSEC** */ status: () => { hardline: number, tutorial: string, breach: boolean }
506
+
507
+ /** **HIGHSEC** */
508
+ upgrade_log: {
509
+ (args?: { is_script?: true, user?: string, run_id?: string, count?: number, start?: number }):
510
+ { t: Date, u: string, r: string, msg: string }[] | ScriptFailure
511
+
512
+ (args: { is_script: false, user?: string, run_id?: string, count?: number, start?: number }):
513
+ string[] | ScriptFailure
779
514
  }
780
515
 
781
- /**
782
- * **HIGHSEC**
783
- */
784
- upgrade_log: ((args?: {
785
- is_script?: true
786
- user?: string
787
- run_id?: string
788
- count?: number
789
- start?: number
790
- }) => {
791
- t: Date
792
- u: string
793
- r: string
794
- msg: string
795
- }[] | ScriptFailure) & ((args: {
796
- is_script: false
797
- user?: string
798
- run_id?: string
799
- count?: number
800
- start?: number
801
- }) => string[] | ScriptFailure)
802
-
803
- /**
804
- * **HIGHSEC**
805
- */
806
- upgrades: (<I extends number>(args: { i: I }) => (
807
- Omit<UpgradeCore, "i"> & { [x: string]: null | boolean | number | string, i: I }
808
- ) | ScriptFailure) & (<
809
- F extends Partial<Upgrade & { loaded: boolean }> = object
810
- >(args?: {
811
- filter?: F
812
- is_script?: true
813
- full?: false
814
- }) => (
815
- Omit<
816
- Pick<UpgradeCore, "tier" | "rarity" | "name" | "type" | "i" | "loaded">,
817
- keyof F
818
- > & F & Record<string, null | boolean | number | string>
819
- )[] | ScriptFailure) & (<
820
- F extends Partial<Upgrade & { loaded: boolean }> = object
821
- >(args?: {
822
- filter?: F
823
- is_script?: true
824
- full: true
825
- }) => (
826
- Omit<UpgradeCore, keyof F> & F & Record<string, null | boolean | number | string>
827
- )[] | ScriptFailure) & ((args?: {
828
- filter?: Partial<Upgrade & { loaded: boolean }>
829
- is_script: false
830
- full?: false
831
- }) => {
832
- msg: string
833
- upgrades: string[]
834
- } | ScriptFailure) & (<
835
- F extends Partial<Upgrade & { loaded: boolean }> = object
836
- >(args?: {
837
- filter?: F
838
- is_script: false
839
- full: true
840
- }) => (
841
- Omit<UpgradeCore, keyof F | `rarity`> & F & {
516
+ /** **HIGHSEC** */
517
+ upgrades: {
518
+ <I extends number>(args: { i: I }): (
519
+ Omit<UpgradeBase, "i"> & { [x: string]: null | boolean | number | string, i: I }
520
+ ) | ScriptFailure
521
+
522
+ <F extends Partial<Upgrade & { loaded: boolean }> = object>(args?: {
523
+ filter?: F
524
+ is_script?: true
525
+ full?: false
526
+ }): (
527
+ Omit<Pick<UpgradeBase, "tier" | "rarity" | "name" | "type" | "i" | "loaded">, keyof F> & F &
528
+ Record<string, null | boolean | number | string>
529
+ )[] | ScriptFailure
530
+
531
+ <F extends Partial<Upgrade & { loaded: boolean }> = object>(args?:
532
+ { filter?: F, is_script?: true, full: true }
533
+ ): (Omit<UpgradeBase, keyof F> & F & Record<string, null | boolean | number | string>)[] | ScriptFailure
534
+
535
+ (args?: { filter?: Partial<Upgrade & { loaded: boolean }>, is_script: false, full?: false }):
536
+ { msg: string, upgrades: string[] } | ScriptFailure
537
+
538
+ <F extends Partial<Upgrade & { loaded: boolean }> = object>(
539
+ args?: { filter?: F, is_script: false, full: true }
540
+ ): (Omit<UpgradeBase, keyof F | `rarity`> & F & {
842
541
  [x: string]: null | boolean | number | string
843
- rarity: "`0noob`" | "`1kiddie`" | "`2h4x0r`" | "`3h4rdc0r3`" | "`4|_|b3|2`" | "`531337`"
844
- }
845
- )[] | ScriptFailure)
542
+ rarity: UpgradeRarityString
543
+ })[] | ScriptFailure
544
+ }
846
545
  }
847
546
 
848
547
  users: {
849
- /**
850
- * **HIGHSEC**
851
- */
852
- inspect: ((args: {
853
- name: "trust"
854
- is_script?: boolean
855
- }) => number) & ((args: {
856
- name: "risk"
857
- is_script?: boolean
858
- }) => string) & ((args: {
859
- name: string
860
- is_script?: true
861
- }) => {
862
- username: string
863
- avatar: string
864
- pronouns: string
865
- user_age?: Date
866
- bio?: string
867
- title?: string
868
- is_main: boolean
869
- alt_of?: string
870
- badges?: string[]
871
- } | ScriptFailure) & ((args: {
872
- name: string
873
- is_script: false
874
- }) => string | ScriptFailure)
548
+ /** **HIGHSEC** */ inspect: {
549
+ (args: { name: "trust", is_script?: boolean }): number
550
+ (args: { name: "risk", is_script?: boolean }): string
551
+
552
+ (args: { name: string, is_script?: true }): {
553
+ username: string
554
+ avatar: string
555
+ pronouns: string
556
+ user_age?: Date
557
+ bio?: string
558
+ title?: string
559
+ is_main: boolean
560
+ alt_of?: string
561
+ badges?: string[]
562
+ } | ScriptFailure
563
+
564
+ (args: { name: string, is_script: false }): string | ScriptFailure
565
+ }
875
566
  }
876
567
  }
877
568
 
878
569
  type Midsec = Highsec & PlayerMidsec & {
879
570
  accts: {
880
- /**
881
- * **MIDSEC**
882
- */
883
- xfer_gc_to: (args: {
884
- to: string
885
- amount: number | string
886
- memo?: string
887
- }) => ScriptResponse
571
+ /** **MIDSEC** */ xfer_gc_to: (args: { to: string, amount: number | string, memo?: string }) => ScriptResponse
888
572
  }
889
573
 
890
- autos: {
891
- /**
892
- * **MIDSEC**
893
- */
894
- reset: () => ScriptSuccess
895
- }
574
+ autos: { /** **MIDSEC** */ reset: () => ScriptSuccess }
896
575
 
897
576
  chats: {
898
- /**
899
- * **MIDSEC**
900
- */
901
- channels: () => string[]
902
-
903
- /**
904
- * **MIDSEC**
905
- */
906
- join: (args: {
907
- channel: string
908
- password?: string
909
- }) => ScriptResponse
910
-
911
- /**
912
- * **MIDSEC**
913
- */
914
- leave: (args: { channel: string }) => ScriptResponse
915
-
916
- /**
917
- * **MIDSEC**
918
- */
919
- users: (args: { channel: string }) => string[] | ScriptFailure
577
+ /** **MIDSEC** */ channels: () => string[]
578
+ /** **MIDSEC** */ join: (args: { channel: string, password?: string }) => ScriptResponse
579
+ /** **MIDSEC** */ leave: (args: { channel: string }) => ScriptResponse
580
+ /** **MIDSEC** */ users: (args: { channel: string }) => string[] | ScriptFailure
920
581
  }
921
582
 
922
583
  escrow: {
923
- /**
924
- * **MIDSEC**
925
- */
926
- stats: () => {
927
- scripts: string[]
928
- total: string
929
- outstanding: string
930
- open_escrow_count: number
931
- } | ScriptFailure
584
+ /** **MIDSEC** */ stats: () =>
585
+ { scripts: string[], total: string, outstanding: string, open_escrow_count: number } | ScriptFailure
932
586
  }
933
587
 
934
588
  market: {
935
- /**
936
- * **MIDSEC**
937
- */
938
- buy: (args: {
939
- i: string
940
- count: number
941
- confirm: true
942
- }) => ScriptResponse
589
+ /** **MIDSEC** */ buy: (args: { i: string, count: number, confirm: true }) => ScriptResponse
943
590
 
944
- /**
945
- * **MIDSEC**
946
- */
947
- stats: () => ScriptFailure | {
948
- total: string
949
- outstanding: string
950
- listed: number
951
- sold: number
952
- }
591
+ /** **MIDSEC** */ stats: () =>
592
+ ScriptFailure | { total: string, outstanding: string, listed: number, sold: number }
953
593
  }
954
594
 
955
- scripts: {
956
- /**
957
- * **MIDSEC**
958
- */
959
- user: () => string[]
960
- }
595
+ scripts: { /** **MIDSEC** */ user: () => string[] }
961
596
 
962
597
  sys: {
963
- /**
964
- * **MIDSEC**
965
- */
966
- manage: ((args: {
967
- unload?: number | number[]
968
- load?: number | number[]
969
- }) => ScriptResponse) & ((args: { reorder?: ([ number, number ] | {
970
- from: number
971
- to: number
972
- })[] | {
973
- from: number
974
- to: number
975
- } }) => string[] | ScriptFailure)
598
+ /** **MIDSEC** */
599
+ manage: {
600
+ (args: { unload?: number | number[], load?: number | number[] }): ScriptResponse
601
+
602
+ (args: { reorder?: ([ number, number ] | { from: number, to: number })[] | { from: number, to: number } }):
603
+ string[] | ScriptFailure
604
+ }
976
605
  }
977
606
  }
978
607
 
979
608
  type Lowsec = Midsec & PlayerLowsec & {
980
- kernel: {
981
- /**
982
- * **LOWSEC**
983
- */
984
- hardline: () => ScriptResponse
985
- }
609
+ kernel: { /** **LOWSEC** */ hardline: () => ScriptResponse }
986
610
 
987
611
  market: {
988
- /**
989
- * **LOWSEC**
990
- */
991
- sell: (args: {
612
+ /** **LOWSEC** */ sell: (args: {
992
613
  i: number
993
614
  cost: number | string
994
615
  description?: string
@@ -999,502 +620,321 @@ type Lowsec = Midsec & PlayerLowsec & {
999
620
  }
1000
621
 
1001
622
  sys: {
1002
- /**
1003
- * **LOWSEC**
1004
- */
1005
- access_log: ((args?: {
1006
- user?: string
1007
- run_id?: string
1008
- is_script?: true
1009
- count?: number
1010
- start?: number
1011
- }) => {
1012
- t: Date
1013
- u: string | undefined
1014
- r: string | undefined
1015
- msg: string
1016
- }[] | ScriptFailure) & ((args: {
1017
- user?: string
1018
- run_id?: string
1019
- is_script: false
1020
- count?: number
1021
- start?: number
1022
- }) => string[])
1023
-
1024
- /**
1025
- * **LOWSEC**
1026
- */
1027
- cull: (args: { i: number | number[], confirm: true }) => ScriptResponse
1028
-
1029
- /**
1030
- * **LOWSEC**
1031
- */
1032
- loc: () => string | ScriptFailure
1033
-
1034
- /**
1035
- * **LOWSEC**
1036
- */
1037
- xfer_upgrade_to: ((args: {
1038
- i: number | number[]
1039
- to: string
1040
- memo?: string
1041
- }) => ScriptResponse) & ((args: {
1042
- sn: string | string[]
1043
- to: string
1044
- memo?: string
1045
- }) => ScriptResponse)
623
+ /** **LOWSEC** */ access_log: {
624
+ (args?: { user?: string, run_id?: string, is_script?: true, count?: number, start?: number }):
625
+ { t: Date, u: string | undefined, r: string | undefined, msg: string }[] | ScriptFailure
626
+
627
+ (args: { user?: string, run_id?: string, is_script: false, count?: number, start?: number }): string[]
628
+ }
629
+
630
+ /** **LOWSEC** */ cull: (args: { i: number | number[], confirm: true }) => ScriptResponse
631
+
632
+ /** **LOWSEC** */ loc: () => string | ScriptFailure
633
+
634
+ /** **LOWSEC** */ xfer_upgrade_to: {
635
+ (args: { i: number | number[], to: string, memo?: string }): ScriptResponse
636
+ (args: { sn: string | string[], to: string, memo?: string }): ScriptResponse
637
+ }
1046
638
  }
1047
639
  }
1048
640
 
1049
641
  type Nullsec = Lowsec & PlayerNullsec & {
1050
642
  corps: {
1051
- /**
1052
- * **NULLSEC**
1053
- */
1054
- create: (args: {
1055
- name: string
1056
- confirm: true
1057
- }) => ScriptResponse
643
+ /** **NULLSEC** */ create: (args: { name: string, confirm: true }) => ScriptResponse
644
+ /** **NULLSEC** */ hire: (args: { name: string }) => ScriptResponse
1058
645
 
1059
- /**
1060
- * **NULLSEC**
1061
- */
1062
- hire: (args: { name: string }) => ScriptResponse
1063
-
1064
- /**
1065
- * **NULLSEC**
1066
- */
1067
- manage: ((args: { command: "list" }) => {
1068
- name: string
1069
- is_admin: boolean
1070
- }[] | ScriptFailure) & ((args: {
1071
- command: "demote" | "promote"
1072
- name: string
1073
- } | {
1074
- command: "fire"
1075
- name: string
1076
- confirm: true
1077
- }) => ScriptResponse)
646
+ /** **NULLSEC** */ manage: {
647
+ (args: { command: "list" }): { name: string, is_admin: boolean }[] | ScriptFailure
1078
648
 
1079
- /**
1080
- * **NULLSEC**
1081
- */
1082
- offers: (() => {
1083
- offers: string[]
1084
- msg: string
1085
- } | ScriptSuccess<{
1086
- msg: string
1087
- current_corp: string | null
1088
- }>) & ((args: { accept: string }) => ScriptResponse)
1089
-
1090
- /**
1091
- * **NULLSEC**
1092
- */
1093
- quit: (args: { confirm: true }) => ScriptResponse
1094
-
1095
- /**
1096
- * **NULLSEC**
1097
- */
1098
- top: () => CorpsTop | {
1099
- top: CorpsTop
1100
- active: {
1101
- name: string
1102
- worth: string
1103
- }
649
+ (args: { command: "demote" | "promote", name: string } | { command: "fire", name: string, confirm: true }):
650
+ ScriptResponse
1104
651
  }
1105
- }
1106
652
 
1107
- sys: {
1108
- /**
1109
- * **NULLSEC**
1110
- */
1111
- breach: (args: { confirm: true }) => ScriptResponse
1112
- }
653
+ /** **NULLSEC** */ offers: {
654
+ (): { offers: string[], msg: string } | ScriptSuccess<{ msg: string, current_corp: string | null }>
655
+ (args: { accept: string }): ScriptResponse
656
+ }
1113
657
 
1114
- trust: {
1115
- /**
1116
- * **NULLSEC**
1117
- */
1118
- me: () => string
658
+ /** **NULLSEC** */ quit: (args: { confirm: true }) => ScriptResponse
659
+ /** **NULLSEC** */ top: () => CorpsTop | { top: CorpsTop, active: { name: string, worth: string } }
1119
660
  }
1120
661
 
662
+ sys: { /** **NULLSEC** */ breach: (args: { confirm: true }) => ScriptResponse }
663
+ trust: { /** **NULLSEC** */ me: () => string }
664
+
1121
665
  users: {
1122
- /**
1123
- * **NULLSEC**
1124
- */
1125
- config: ((args: {
1126
- list: false
1127
- is_script?: true | null
1128
- avatar?: string | null
1129
- user_age?: boolean | null
1130
- account_age?: boolean | null
1131
- bio?: string | null
1132
- title?: string | null
1133
- pronouns?: string | null
1134
- corp?: boolean | null
1135
- alt_of?: string | null
1136
- badges?: string[] | null
1137
- }) => ScriptResponse) & ((args: {
1138
- list: true
1139
- is_script?: true
1140
- avatar?: string | null
1141
- user_age?: boolean | null
1142
- account_age?: boolean | null
1143
- bio?: string | null
1144
- title?: string | null
1145
- pronouns?: string | null
1146
- corp?: boolean | null
1147
- alt_of?: string | null
1148
- badges?: string[] | null
1149
- }) => {
1150
- avatar: string | null
1151
- user_age?: boolean
1152
- account_age?: boolean
1153
- bio: string | null
1154
- title: string | null
1155
- pronouns: string
1156
- corp?: boolean
1157
- alt_of: string | null
1158
- badges: string[]
1159
- }) & ((args: {
1160
- list: true
1161
- is_script: false
1162
- avatar?: string | null
1163
- user_age?: boolean | null
1164
- account_age?: boolean | null
1165
- bio?: string | null
1166
- title?: string | null
1167
- pronouns?: string | null
1168
- corp?: boolean | null
1169
- alt_of?: string | null
1170
- badges?: string[] | null
1171
- }) => string)
666
+ /** **NULLSEC** */ config: {
667
+ (args: {
668
+ list: false
669
+ is_script?: true | null
670
+ avatar?: string | null
671
+ user_age?: boolean | null
672
+ account_age?: boolean | null
673
+ bio?: string | null
674
+ title?: string | null
675
+ pronouns?: string | null
676
+ corp?: boolean | null
677
+ alt_of?: string | null
678
+ badges?: string[] | null
679
+ }): ScriptResponse
680
+
681
+ (args: {
682
+ list: true
683
+ is_script?: true
684
+ avatar?: string | null
685
+ user_age?: boolean | null
686
+ account_age?: boolean | null
687
+ bio?: string | null
688
+ title?: string | null
689
+ pronouns?: string | null
690
+ corp?: boolean | null
691
+ alt_of?: string | null
692
+ badges?: string[] | null
693
+ }): {
694
+ avatar: string | null
695
+ user_age?: boolean
696
+ account_age?: boolean
697
+ bio: string | null
698
+ title: string | null
699
+ pronouns: string
700
+ corp?: boolean
701
+ alt_of: string | null
702
+ badges: string[]
703
+ }
704
+
705
+ (args: {
706
+ list: true
707
+ is_script: false
708
+ avatar?: string | null
709
+ user_age?: boolean | null
710
+ account_age?: boolean | null
711
+ bio?: string | null
712
+ title?: string | null
713
+ pronouns?: string | null
714
+ corp?: boolean | null
715
+ alt_of?: string | null
716
+ badges?: string[] | null
717
+ }): string
718
+ }
1172
719
  }
1173
720
  }
1174
721
 
1175
- type MongoValue = string | number | boolean | Date | MongoValue[] | {
1176
- [key: string]: MongoValue
1177
- } | null
722
+ type MongoTypeString = "minKey" | "double" | "string" | "object" | "array" | "binData" | "undefined" | "objectId" |
723
+ "bool" | "date" | "null" | "regex" | "dbPointer" | "javascript" | "symbol" | "int" | "timestamp" | "long" | "decimal" | "maxKey";
724
+ type MongoTypeNumber = -1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 127;
1178
725
 
1179
- type MongoCommandValue = string | number | boolean | Date | MongoCommandValue[] | {
1180
- [key: string]: MongoCommandValue
1181
- } | null | undefined
726
+ type MongoValue = string | number | boolean | Date | MongoValue[] | { [key: string]: MongoValue } | null
1182
727
 
1183
- type Query = {
1184
- [key: string]: MongoValue | Query
1185
- } & {
1186
- _id?: Id
1187
- $in?: MongoValue[]
1188
- }
728
+ type MongoCommandValue = string | number | boolean | Date | MongoCommandValue[] | { [key: string]: MongoCommandValue } |
729
+ null | undefined
1189
730
 
1190
- type Projection = Record<string, boolean | 0 | 1>
1191
-
1192
- type MongoCommand = MongoCommandValue & Partial<{
1193
- $set: Record<string, MongoCommandValue>
1194
- $push: Record<string, MongoCommandValue>
1195
- $unset: Record<string, "">
1196
- }>
731
+ /**
732
+ * Currently unused
733
+ */
734
+ type MongoLogicalSelectors<T extends MongoValue = MongoValue> = {
735
+ $not: T | MongoComparisonSelectors<T> | MongoLogicalSelectors<T>
736
+ $nor: T[]
737
+ $or: T[]
738
+ $and: T[]
739
+ }
1197
740
 
1198
- type Id = string | number | boolean | Date | Record<string, MongoValue>
741
+ type MongoArraySelectors<T extends Array<MongoValue> = Array<MongoValue>> = {
742
+ $all: T
743
+ $elemMatch: T
744
+ $size: number
745
+ }
1199
746
 
1200
- type MongoDocument = {
1201
- [key: string]: MongoValue
1202
- _id: Id
747
+ type MongoComparisonSelectors<T extends MongoValue = MongoValue> = {
748
+ $eq: T
749
+ $gt: T
750
+ $gte: T
751
+ $in: T[]
752
+ $lt: T
753
+ $lte: T
754
+ $ne: T
755
+ $nin: T[]
1203
756
  }
1204
757
 
1205
- type SortOrder = {
1206
- [key: string]: 1 | -1 | SortOrder
758
+ type MongoElementSelectors = {
759
+ $exists: boolean
760
+ $type: MongoTypeNumber | MongoTypeString
1207
761
  }
1208
762
 
763
+ type MongoQuerySelector<T extends MongoValue = MongoValue> = Partial<T extends MongoValue[] ?
764
+ (MongoArraySelectors<T> & MongoElementSelectors & MongoComparisonSelectors<T>) :
765
+ (MongoElementSelectors & MongoComparisonSelectors<T>)>
766
+
767
+ type Query = { [key: string]: MongoValue | Query } & { _id?: Id, $in?: MongoValue[] }
768
+ type Projection = Record<string, boolean | 0 | 1>
769
+
770
+ type MongoCommand = MongoCommandValue & Partial<
771
+ { $set: Record<string, MongoCommandValue>, $push: Record<string, MongoCommandValue>, $unset: Record<string, ""> }
772
+ >
773
+
774
+ type Id = string | number | boolean | Date | Record<string, MongoValue>
775
+ type MongoDocument = { [key: string]: MongoValue, _id: Id }
776
+ type SortOrder = { [key: string]: 1 | -1 | SortOrder }
777
+
1209
778
  type Cursor = {
1210
- /**
1211
- * Returns the first document that satisfies the query.
1212
- */
1213
- first: () => MongoDocument | null
1214
-
1215
- /**
1216
- * Returns an array of documents that satisfy the query.
1217
- */
1218
- array: () => MongoDocument[]
1219
-
1220
- /**
1221
- * Returns the number of documents that match the query.
1222
- */
1223
- count: () => number
1224
-
1225
- /**
1226
- * Returns the first document that satisfies the query.
1227
- * Also makes cursor unusable.
1228
- */
779
+ /** Returns the first document that satisfies the query. */ first: () => MongoDocument | null
780
+ /** Returns an array of documents that satisfy the query. */ array: () => MongoDocument[]
781
+ /** Returns the number of documents that match the query. */ count: () => number
782
+
783
+ /** Returns the first document that satisfies the query. Also makes cursor unusable. */
1229
784
  first_and_close: () => MongoDocument
1230
785
 
1231
- /**
1232
- * Returns an array of documents that satisfy the query.
1233
- * Also makes cursor unusable.
1234
- */
786
+ /** Returns an array of documents that satisfy the query. Also makes cursor unusable. */
1235
787
  array_and_close: () => MongoDocument[]
1236
788
 
1237
- /**
1238
- * Returns the number of documents that match the query.
1239
- * Also makes cursor unusable.
1240
- */
789
+ /** Returns the number of documents that match the query. Also makes cursor unusable. */
1241
790
  count_and_close: () => number
1242
791
 
1243
- /**
1244
- * Run callback on each document that satisfied the query.
1245
- *
1246
- * @param funct callback function
1247
- */
1248
- each: (funct: (document: MongoDocument) => void) => null
1249
-
1250
- /**
1251
- * Returns a new cursor with documents sorted as specified.
1252
- * A value of 1 sorts the property ascending, and -1 descending.
1253
- *
1254
- * @param order the way the documents are to be sorted
1255
- */
792
+ /** Run `callback` on each document that satisfied the query. */
793
+ each: (callback: (document: MongoDocument) => void) => null
794
+
795
+ /** Returns a new cursor with documents sorted as specified.
796
+ * A value of 1 sorts the property ascending, and -1 descending.
797
+ * @param order The way the documents are to be sorted. */
1256
798
  sort: (order?: SortOrder) => Cursor
1257
799
 
1258
- /**
1259
- * Returns a new cursor without the first number of documents.
1260
- *
1261
- * @param count number of documents to skip
1262
- */
800
+ /** Returns a new cursor without the first number of documents.
801
+ * @param count Number of documents to skip. */
1263
802
  skip: (count: number) => Cursor
1264
803
 
1265
- /**
1266
- * Returns a new cursor limited to a number of documents as specified
1267
- *
1268
- * @param count number of documents
1269
- */
804
+ /** Returns a new cursor limited to a number of documents as specified.
805
+ * @param count Number of documents. */
1270
806
  limit: (count: number) => Cursor
1271
807
 
1272
- /**
1273
- * @param key they key of the documents
1274
- */
1275
- distinct: ((key: string) => MongoValue[]) & ((key: "_id") => Id[])
1276
-
1277
- /**
1278
- * Makes cursor unusable.
1279
- */
1280
- close: () => null
1281
-
808
+ /** @param key The key of the documents. */ distinct: ((key: string) => MongoValue[]) & ((key: "_id") => Id[])
809
+ /** Make cursor unusable. */ close: () => null
1282
810
  NumberLong: (number: number) => number
1283
811
  ObjectId: () => any
1284
812
  }
1285
813
 
1286
- type CLIContext = {
1287
- /**
1288
- * The name of the user who is calling the script (i.e. n00b)
1289
- */
1290
- caller: string
1291
-
1292
- /**
1293
- * The name of this script
1294
- */
1295
- this_script: string
1296
-
1297
- /**
1298
- * the number of columns in the caller’s terminal, if reported by the client
1299
- */
1300
- cols: number
1301
-
1302
- /**
1303
- * the number of rows in the caller’s terminal, if reported by the client
1304
- */
1305
- rows: number
1306
-
1307
- /**
1308
- * The name of the script that directly called this script, or null if called on the command line or as a scriptor
1309
- */
1310
- calling_script: null
814
+ type CliContext = {
815
+ /** The name of the user who is calling the script. */ caller: string
816
+ /** The name of this script. */ this_script: string
817
+ /** The number of columns in the caller’s terminal. */ cols: number
818
+ /** The number of rows in the caller’s terminal. */ rows: number
819
+
820
+ /** The name of the script that directly called this script, or null if called on the command line or as a
821
+ * scriptor. */ calling_script: null
822
+ is_scriptor?: undefined
823
+ is_brain?: undefined
1311
824
  }
1312
825
 
1313
- type SubscriptContext = Replace<CLIContext, {
1314
- /**
1315
- * The name of the script that directly called this script, or null if called on the command line or as a scriptor
1316
- */
826
+ type SubscriptContext = Replace<CliContext, {
827
+ /** The name of the script that directly called this script, or null if called on the command line or as a scriptor.
828
+ */
1317
829
  calling_script: string
1318
830
  }>
1319
831
 
1320
- type ScriptorContext = CLIContext & {
1321
- /**
1322
- * true if the script is being run as a scriptor, otherwise falsey (not present currently, but I wouldn’t rely on that)
1323
- */
1324
- is_scriptor: true
1325
- }
832
+ type ScriptorContext =
833
+ Replace<CliContext, { /** Whether the script is being run as a scriptor. */ is_scriptor: true }>
1326
834
 
1327
- type BrainContext = CLIContext & {
1328
- /**
1329
- * true if the script is being run via a bot brain
1330
- */
1331
- is_brain: true
1332
- }
835
+ type BrainContext =
836
+ Replace<CliContext, { /** Whether the script is being run via a bot brain. */ is_brain: true }>
1333
837
 
1334
- type Context = CLIContext | SubscriptContext | ScriptorContext | BrainContext
838
+ type Context = CliContext | SubscriptContext | ScriptorContext | BrainContext
1335
839
 
1336
- /**
1337
- * Subscript space that can call FULLSEC scripts.
1338
- */
1339
- declare const $fs: Fullsec
840
+ /** Subscript space that can call FULLSEC scripts. */ declare const $fs: Fullsec
1340
841
 
1341
- /**
1342
- * Subscript space that can call HIGHSEC and above scripts.
1343
- * Makes your script HIGHSEC (overrides FULLSEC).
1344
- */
842
+ /** Subscript space that can call HIGHSEC and above scripts. Makes your script HIGHSEC (overrides FULLSEC). */
1345
843
  declare const $hs: Highsec
1346
844
 
1347
- /**
1348
- * Subscript space that can call MIDSEC and above scripts.
1349
- * Makes your script MIDSEC (overrides higher security levels).
1350
- */
845
+ /** Subscript space that can call MIDSEC and above scripts. Makes your script MIDSEC (overrides higher security levels).
846
+ */
1351
847
  declare const $ms: Midsec
1352
848
 
1353
- /**
1354
- * Subscript space that can call LOWSEC and above scripts.
1355
- * Makes your script LOWSEC (overrides higher security levels).
1356
- */
849
+ /** Subscript space that can call LOWSEC and above scripts. Makes your script LOWSEC (overrides higher security levels).
850
+ */
1357
851
  declare const $ls: Lowsec
1358
852
 
1359
- /**
1360
- * Subscript space that can call any script.
1361
- * Makes your script NULLSEC (overrides higher security levels).
1362
- */
853
+ /** Subscript space that can call any script. Makes your script NULLSEC (overrides higher security levels). */
1363
854
  declare const $ns: Nullsec
1364
855
 
1365
- /**
1366
- * Subscript space that can call FULLSEC scripts.
1367
- */
1368
- declare const $4s: typeof $fs
856
+ /** Subscript space that can call FULLSEC scripts. */ declare const $4s: typeof $fs
1369
857
 
1370
- /**
1371
- * Subscript space that can call HIGHSEC and above scripts.
1372
- * Makes your script HIGHSEC (overrides FULLSEC).
1373
- */
858
+ /** Subscript space that can call HIGHSEC and above scripts. Makes your script HIGHSEC (overrides FULLSEC). */
1374
859
  declare const $3s: typeof $hs
1375
860
 
1376
- /**
1377
- * Subscript space that can call MIDSEC and above scripts.
1378
- * Makes your script MIDSEC (overrides higher security levels).
1379
- */
861
+ /** Subscript space that can call MIDSEC and above scripts. Makes your script MIDSEC (overrides higher security levels).
862
+ */
1380
863
  declare const $2s: typeof $ms
1381
864
 
1382
- /**
1383
- * Subscript space that can call LOWSEC and above scripts.
1384
- * Makes your script LOWSEC (overrides higher security levels).
1385
- */
865
+ /** Subscript space that can call LOWSEC and above scripts. Makes your script LOWSEC (overrides higher security levels).
866
+ */
1386
867
  declare const $1s: typeof $ls
1387
868
 
1388
- /**
1389
- * Subscript space that can call any script.
1390
- * Makes your script NULLSEC (overrides higher security levels).
1391
- */
869
+ /** Subscript space that can call any script. Makes your script NULLSEC (overrides higher security levels). */
1392
870
  declare const $0s: typeof $ns
1393
871
 
1394
- /**
1395
- * Subscript space that can call any script.
1396
- * Uses seclevel provided in comment before script (defaults to NULLSEC)
1397
- *
1398
- * ```js
1399
- * // @seclevel MIDSEC
1400
- * export function script() {
1401
- * $s.foo.bar() // will be converted to #ms.foo.bar()
1402
- * }
1403
- * ```
1404
- */
872
+ /** Subscript space that can call any script. Uses seclevel provided in comment before script (defaults to NULLSEC)
873
+ * @example
874
+ * // @ seclevel MIDSEC
875
+ * // remove the space betwen "@" and "s", there's only a space because otherwise vscode breaks
876
+ * export function script() {
877
+ * $s.foo.bar() // will be converted to #ms.foo.bar()
878
+ * } */
1405
879
  declare const $s: Nullsec
1406
880
 
881
+ type ObjectId = { $oid: string }
882
+
1407
883
  declare const $db: {
1408
- /**
1409
- * Insert
1410
- *
1411
- * Inserts a document or documents into a collection.
1412
- * @param documents A document or array of documents to insert into the collection.
1413
- */
884
+ /** Insert a document or documents into a collection.
885
+ * @param documents A document or array of documents to insert into the collection. */
1414
886
  i: (documents: object | object[]) => {
1415
887
  ok: 1
1416
888
  n: number
1417
- opTime: {
1418
- ts: "Undefined Conversion"
1419
- t: number
1420
- }
889
+ opTime: { ts: "Undefined Conversion", t: number }
1421
890
  electionId: "Undefined Conversion"
1422
891
  operationTime: "Undefined Conversion"
1423
892
  $clusterTime: {
1424
893
  clusterTime: "Undefined Conversion"
1425
- signature: {
1426
- hash: "Undefined Conversion"
1427
- keyId: "Undefined Conversion"
1428
- }
894
+ signature: { hash: "Undefined Conversion", keyId: "Undefined Conversion" }
1429
895
  }
1430
896
  }
1431
897
 
1432
- /**
1433
- * Remove
1434
- *
1435
- * Removes documents from a collection.
1436
- * @param query Specifies deletion criteria using query operators.
1437
- */
898
+ /** Remove documents from a collection.
899
+ * @param query Specifies deletion criteria using query operators. */
1438
900
  r: (query: Query) => {
1439
901
  ok: 0 | 1
1440
902
  n: number
1441
- opTime: {
1442
- ts: "Undefined Conversion"
1443
- t: number
1444
- }
903
+ opTime: { ts: "Undefined Conversion", t: number }
1445
904
  electionId: "Undefined Conversion"
1446
905
  operationTime: "Undefined Conversion"
1447
906
  $clusterTime: {
1448
907
  clusterTime: "Undefined Conversion"
1449
- signature: {
1450
- hash: "Undefined Conversion"
1451
- keyId: "Undefined Conversion"
1452
- }
908
+ signature: { hash: "Undefined Conversion", keyId: "Undefined Conversion" }
1453
909
  }
1454
910
  }
1455
911
 
1456
- /**
1457
- * Find
1458
- *
1459
- * Selects documents in a collection or view and returns a cursor to the selected documents.
1460
- * @param query Specifies deletion criteria using query operators.
1461
- * @param projection Specifies the fields to return in the documents that match the query filter.
1462
- */
912
+ /** Find documents in a collection or view and returns a cursor to the selected documents.
913
+ * @param query Specifies deletion criteria using query operators.
914
+ * @param projection Specifies the fields to return in the documents that match the query filter. */
1463
915
  f: (query?: Query, projection?: Projection) => Cursor
1464
916
 
1465
- /**
1466
- * Update
1467
- *
1468
- * Modifies an existing document or documents in a collection.
1469
- * @param query Specifies deletion criteria using query operators.
1470
- * @param command The modifications to apply. {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters}
1471
- */
917
+ /** Update an existing documents in a collection.
918
+ * @param query Specifies deletion criteria using query operators.
919
+ * @param command The modifications to apply.
920
+ * {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
1472
921
  u: (query: Query | Query[], command: MongoCommand) => {
1473
922
  ok: 0 | 1
1474
923
  nModified: number
1475
924
  n: number
1476
- opTime: {
1477
- ts: "Undefined Conversion"
1478
- t: number
1479
- }
925
+ opTime: { ts: "Undefined Conversion", t: number }
1480
926
  electionId: "Undefined Conversion"
1481
927
  operationTime: "Undefined Conversion"
1482
928
  $clusterTime: {
1483
929
  clusterTime: "Undefined Conversion"
1484
- signature: {
1485
- hash: "Undefined Conversion"
1486
- keyId: "Undefined Conversion"
1487
- }
930
+ signature: { hash: "Undefined Conversion", keyId: "Undefined Conversion" }
1488
931
  }
1489
932
  }
1490
933
 
1491
- /**
1492
- * Update 1
1493
- *
1494
- * Updates a single document within the collection based on the filter.
1495
- * @param query Specifies deletion criteria using query operators.
1496
- * @param command The modifications to apply. {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters}
1497
- */
934
+ /** Updates one document within the collection based on the filter.
935
+ * @param query Specifies deletion criteria using query operators.
936
+ * @param command The modifications to apply.
937
+ * {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
1498
938
  u1: (query: Query | Query[], command: MongoCommand) => {
1499
939
  ok: 0 | 1
1500
940
  nModified: number
@@ -1514,144 +954,120 @@ declare const $db: {
1514
954
  }
1515
955
  }
1516
956
 
1517
- /**
1518
- * Upsert
1519
- *
1520
- * Same as Update, but if no documents match the query, one document will be inserted based on the properties in both the query and the command.
1521
- * The `$setOnInsert` operator is useful to set defaults.
1522
- * @param query Specifies deletion criteria using query operators.
1523
- * @param command The modifications to apply. {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters}
1524
- */
957
+ /** Update or insert or insert document.
958
+ * Same as Update, but if no documents match the query, one document will be inserted based on the properties in
959
+ * both the query and the command.
960
+ * The `$setOnInsert` operator is useful to set defaults.
961
+ * @param query Specifies deletion criteria using query operators.
962
+ * @param command The modifications to apply.
963
+ * {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
1525
964
  us: (query: Query | Query[], command: MongoCommand) => {
1526
965
  ok: 0 | 1
1527
966
  nModified: number
1528
967
  n: number
1529
- opTime: {
1530
- ts: "Undefined Conversion"
1531
- t: number
1532
- }
968
+ opTime: { ts: "Undefined Conversion", t: number }
1533
969
  electionId: "Undefined Conversion"
1534
970
  operationTime: "Undefined Conversion"
1535
971
  $clusterTime: {
1536
972
  clusterTime: "Undefined Conversion"
1537
- signature: {
1538
- hash: "Undefined Conversion"
1539
- keyId: "Undefined Conversion"
1540
- }
973
+ signature: { hash: "Undefined Conversion", keyId: "Undefined Conversion" }
1541
974
  }
1542
975
  }
976
+
977
+ ObjectId: () => ObjectId
1543
978
  }
1544
979
 
1545
- /**
1546
- * Debug Log
1547
- *
1548
- * If `$D()` is called in a script you own, the `return` value of the top level script is suppressed and instead an array of every `$D()`’d entry is printed.
1549
- * This lets you use `$D()` like `console.log()`.
1550
- *
1551
- * `$D()` in scripts not owned by you are not shown but the `return` value always is.
1552
- *
1553
- * `$D()` returns the first argument so `$D("Hello, World!") evaluates to `"Hello, World!"` as if the `$D` text wasn't there.
1554
- *
1555
- * `$D()`’d items are returned even if the script times out or errors.
1556
- */
980
+ /** Debug Log.
981
+ *
982
+ * If `$D()` is called in a script you own, the `return` value of the top level script is suppressed and instead an
983
+ * array of every `$D()`’d entry is printed.
984
+ * This lets you use `$D()` like `console.log()`.
985
+ *
986
+ * `$D()` in scripts not owned by you are not shown but the `return` value always is.
987
+ *
988
+ * `$D()` returns the first argument so `$D("Hello, World!") evaluates to `"Hello, World!"` as if the `$D` text wasn't
989
+ * there.
990
+ *
991
+ * `$D()`’d items are returned even if the script times out or errors. */
1557
992
  declare function $D<T>(args: T): T
1558
993
 
1559
- /**
1560
- * Function Multi-Call Lock
1561
- *
1562
- * This is used by escrow to ensure that it is only used once in script execution.
1563
- *
1564
- * The first time (per-script) `$FMCL` is encountered, it returns `undefined`, every other time it `return`s `true`.
1565
- *
1566
- * @example
1567
- * if ($FMCL)
1568
- * return { ok: false, msg: "this script can only be used once per script execution" }
1569
- *
1570
- * // all code here will only run once
1571
- */
994
+ /** Function Multi-Call Lock.
995
+ *
996
+ * This is used by escrow to ensure that it is only used once in script execution.
997
+ *
998
+ * The first time (per-script) `$FMCL` is encountered, it returns `undefined`, every other time it `return`s `true`.
999
+ *
1000
+ * @example
1001
+ * if ($FMCL)
1002
+ * return { ok: false, msg: "This script can only be used once per script execution." }
1003
+ *
1004
+ * // all code here will only run once */
1572
1005
  declare const $FMCL: undefined | true
1573
1006
 
1574
- /**
1575
- * Global
1576
- *
1577
- * A mutable, per-script global object.
1578
- * $G persists between script calls until the end of the main script run making it useful for caching db entries when your script is a subscript.
1579
- *
1580
- * @example
1581
- * if (!$G.dbCache)
1582
- * $G.dbCache = $db.f({ whatever: true }).first()
1583
- */
1584
- declare const $G: any
1585
-
1586
- /**
1587
- * This contains a JS timestamp (not Date) set immediately before your code begins running.
1588
- *
1589
- * @example
1590
- * Date.now() - _START // milliseconds left of run time
1591
- */
1007
+ /** Per-script mutable "global" persistent object that is discarded at the end of top level script execution.
1008
+ *
1009
+ * `$G` persists between script calls until the end of the main script run making it useful for caching db entries when
1010
+ * your script is a subscript.
1011
+ * @example
1012
+ * if (!$G.dbCache)
1013
+ * $G.dbCache = $db.f({ whatever: true }).first() */
1014
+ declare const $G: Record<string | symbol, any>
1015
+
1016
+ /** This contains a JS timestamp (not Date) set immediately before your code begins running.
1017
+ * @example
1018
+ * $D(Date.now() - _START) // milliseconds left of run time
1019
+ */
1592
1020
  declare const _START: number
1593
1021
 
1594
- /**
1595
- * This contains a JS timestamp (not Date) set immediately before your code begins running.
1596
- *
1597
- * @example
1598
- * Date.now() - _ST // milliseconds left of run time
1599
- */
1022
+ /** This contains a JS timestamp (not Date) set immediately before your code begins running.
1023
+ * @example
1024
+ * $D(Date.now() - _ST) // milliseconds left of run time */
1600
1025
  declare const _ST: typeof _START
1601
1026
 
1602
- /**
1603
- * JavaScript timestamp for the end of the script run (`_START + _TIMEOUT`).
1604
- */
1605
- declare const _END: number
1027
+ /** JavaScript timestamp for the end of the script run (`_START + _TIMEOUT`). */ declare const _END: number
1606
1028
 
1607
- /**
1608
- * The number of milliseconds a script can run for.
1609
- * Normally `5000` though it has been known to change.
1610
- */
1029
+ /** The number of milliseconds a script can run for. Normally `5000` though it has been known to change. */
1611
1030
  declare const _TIMEOUT: number
1612
1031
 
1613
- /**
1614
- * The number of milliseconds a script can run for.
1615
- * Normally `5000` though it has been known to change.
1616
- */
1032
+ /** The number of milliseconds a script can run for. Normally `5000` though it has been known to change. */
1617
1033
  declare const _TO: typeof _TIMEOUT
1618
1034
 
1619
- /** The source code of this script as a string. */
1620
- declare const _SOURCE: string
1621
-
1622
- /** A unix timestamp of the date this script was built. */
1623
- declare const _BUILD_DATE: number
1035
+ /** The source code of this script as a string. */ declare const _SOURCE: string
1036
+ /** A unix timestamp of the date this script was built. */ declare const _BUILD_DATE: number
1624
1037
 
1625
- /**
1626
- * The user this script has been uploaded to.
1627
- *
1628
- * Shorter alternative to `context.this_script.split(".")[0].
1629
- *
1630
- * In rare cases where it's not known at build time, it's `"UNKNOWN"`.
1631
- */
1038
+ /** The user this script has been uploaded to.
1039
+ *
1040
+ * Shorter alternative to `context.this_script.split(".")[0].
1041
+ *
1042
+ * In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
1632
1043
  declare const _SCRIPT_USER: string
1633
1044
 
1634
- /**
1635
- * The name of this script excluding the user and `.`.
1636
- *
1637
- * e.g. in the script `foo.bar`, `_SCRIPT_NAME` is `bar`.
1638
- *
1639
- * Shorter alternative to `context.this_script.split(".")[1].
1640
- *
1641
- * In rare cases where it's not known at build time, it's `"UNKNOWN"`.
1642
- */
1045
+ /** The name of this script excluding the user and `.`.
1046
+ *
1047
+ * e.g. in the script `foo.bar`, `_SCRIPT_NAME` is `bar`.
1048
+ *
1049
+ * Shorter alternative to `context.this_script.split(".")[1].
1050
+ *
1051
+ * In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
1643
1052
  declare const _SCRIPT_NAME: string
1644
1053
 
1645
- /**
1646
- * The full name of this script equivilent to `context.this_script` but should use less characters.
1647
- *
1648
- * In rare cases where it's not known at build time, it's `"UNKNOWN"`.
1649
- */
1054
+ /** The full name of this script equivilent to `context.this_script` but should use less characters.
1055
+ *
1056
+ * In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
1650
1057
  declare const _FULL_SCRIPT_NAME: string
1651
1058
 
1652
- /**
1653
- * The seclevel of this script as a number.
1654
- *
1655
- * In rare cases where it's not known at build time, it's `-1`.
1656
- */
1059
+ /** The seclevel of this script as a number.
1060
+ *
1061
+ * In rare cases where it's not known at build time, it's `-1`. */
1657
1062
  declare const _SECLEVEL: -1 | 0 | 1 | 2 | 3 | 4
1063
+
1064
+ type DeepFreeze<T> = { readonly [P in keyof T]: DeepFreeze<T[P]> }
1065
+
1066
+ /** Recursively
1067
+ * [`Object.freeze()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
1068
+ * an object and its properties' objects and its properties' objects and so on.
1069
+ *
1070
+ * [Official Hackmud Wiki](https://wiki.hackmud.com/scripting/extensions/deep_freeze) */
1071
+ declare const DEEP_FREEZE: <T>(value: T) => DeepFreeze<T>
1072
+
1073
+ declare const _RUN_ID: string