hackmud-script-manager 0.20.4-4605f71 → 0.20.4-484afbe
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +4 -0
- package/bin/hsm.js +291 -267
- package/env.d.ts +333 -276
- package/generateTypeDeclaration.js +2 -1
- package/index.js +2 -1
- package/package.json +38 -38
- package/processScript/index.js +3 -3
- package/processScript/minify.js +11 -17
- package/processScript/postprocess.d.ts +1 -1
- package/processScript/postprocess.js +3 -3
- package/processScript/preprocess.js +5 -3
- package/processScript/transform.js +102 -95
- package/push.js +4 -4
- package/watch.js +12 -9
package/env.d.ts
CHANGED
@@ -1,16 +1,9 @@
|
|
1
1
|
type Replace<A, B> = Omit<A, keyof B> & B
|
2
|
-
type ScriptSuccess<T =
|
2
|
+
type ScriptSuccess<T = unknown> = { ok: true } & T
|
3
3
|
type ScriptFailure = { ok: false, msg?: string }
|
4
|
-
type ScriptResponse<T =
|
4
|
+
type ScriptResponse<T = unknown> = ScriptSuccess<T> | ScriptFailure
|
5
5
|
type ErrorScripts = Record<string, () => ScriptFailure>
|
6
6
|
|
7
|
-
type AllOptional<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? true : false }[keyof T]
|
8
|
-
|
9
|
-
type Scriptor<Args = unknown, Ret = unknown> = {
|
10
|
-
name: string
|
11
|
-
call: AllOptional<Args> extends true ? (args?: Args) => Ret : (args: Args) => Ret
|
12
|
-
}
|
13
|
-
|
14
7
|
type Subscripts = Record<string, Record<string, (...args: any) => any>> & {
|
15
8
|
accts: ErrorScripts
|
16
9
|
autos: ErrorScripts
|
@@ -34,8 +27,7 @@ interface PlayerLowsec {}
|
|
34
27
|
interface PlayerNullsec {}
|
35
28
|
|
36
29
|
type UpgradeRarityString = "`0noob`" | "`1kiddie`" | "`2h4x0r`" | "`3h4rdc0r3`" | "`4|_|b3|2`" | "`531337`"
|
37
|
-
type UpgradeRarityNumber = 0 | 1 | 2 | 3 | 4 | 5
|
38
|
-
type UpgradeRarity = UpgradeRarityString | UpgradeRarityNumber;
|
30
|
+
type UpgradeRarityNumber = 0 | 1 | 2 | 3 | 4 | 5
|
39
31
|
|
40
32
|
type UpgradeBase = {
|
41
33
|
name: string
|
@@ -51,10 +43,8 @@ type UpgradeBase = {
|
|
51
43
|
|
52
44
|
type Upgrade = UpgradeBase & Record<string, null | boolean | number | string>
|
53
45
|
|
54
|
-
type CliUpgrade = Omit<UpgradeBase, `rarity`> &
|
55
|
-
[
|
56
|
-
rarity: UpgradeRarityString
|
57
|
-
}
|
46
|
+
type CliUpgrade = Omit<UpgradeBase, `rarity`> &
|
47
|
+
{ [k: string]: null | boolean | number | string, rarity: UpgradeRarityString }
|
58
48
|
|
59
49
|
type UsersTopItem<R> = { rank: R, name: string, last_activity: string, balance: string }
|
60
50
|
type CorpsTopItem<R> = { rank: R, name: string, worth: string }
|
@@ -132,26 +122,25 @@ type Fullsec = Subscripts & PlayerFullsec & {
|
|
132
122
|
}
|
133
123
|
|
134
124
|
escrow: {
|
135
|
-
/** **FULLSEC** */ charge: (args: {
|
136
|
-
cost: number | string
|
137
|
-
is_unlim?: boolean
|
138
|
-
}) => null | ScriptFailure
|
139
|
-
|
125
|
+
/** **FULLSEC** */ charge: (args: { cost: number | string, is_unlim?: boolean }) => null | ScriptFailure
|
140
126
|
confirm: never
|
141
127
|
}
|
142
128
|
|
143
|
-
gui: {
|
144
|
-
chats: never
|
145
|
-
quiet: never
|
146
|
-
size: never
|
147
|
-
vfx: never
|
148
|
-
vol: never
|
149
|
-
}
|
129
|
+
gui: { chats: never, quiet: never, size: never, vfx: never, vol: never }
|
150
130
|
|
151
131
|
market: {
|
152
132
|
/** **FULLSEC** */ browse: {
|
153
133
|
(args:
|
154
|
-
Partial<{
|
134
|
+
Partial<{
|
135
|
+
seller: string | MongoQuerySelector<string>,
|
136
|
+
listed_before: number | MongoQuerySelector<number>,
|
137
|
+
listed_after: number,
|
138
|
+
cost: number | MongoQuerySelector<number> | string,
|
139
|
+
rarity: UpgradeRarityNumber | MongoQuerySelector<UpgradeRarityNumber>,
|
140
|
+
name: string | MongoQuerySelector<string>
|
141
|
+
} & Omit<{
|
142
|
+
[k in keyof CliUpgrade]: CliUpgrade[k] | MongoQuerySelector<CliUpgrade[k]>
|
143
|
+
}, "rarity">>
|
155
144
|
): { i: string, name: string, rarity: Upgrade["rarity"], cost: number }[] | ScriptFailure
|
156
145
|
|
157
146
|
<I extends string>(args: { i: I }): {
|
@@ -456,7 +445,10 @@ type Highsec = Fullsec & PlayerHighsec & {
|
|
456
445
|
/** **HIGHSEC**
|
457
446
|
* @returns GC balance as number if `is_script` is true (default).
|
458
447
|
* @returns GC balance as string if `is_script` is false. */
|
459
|
-
balance:
|
448
|
+
balance: {
|
449
|
+
(args?: { is_script?: true }): number
|
450
|
+
(args: { is_script: false }): string
|
451
|
+
}
|
460
452
|
|
461
453
|
/** **HIGHSEC**
|
462
454
|
* @returns Transaction history according to filter.
|
@@ -626,6 +618,9 @@ type Lowsec = Midsec & PlayerLowsec & {
|
|
626
618
|
(args: { i: number | number[], to: string, memo?: string }): ScriptResponse
|
627
619
|
(args: { sn: string | string[], to: string, memo?: string }): ScriptResponse
|
628
620
|
}
|
621
|
+
/** **LOWSEC** */ expose_access_log: (args: { target: string }) => ScriptResponse
|
622
|
+
/** **LOWSEC** */ xfer_gc_from: (args: { target: string, amount: number | string }) => ScriptResponse
|
623
|
+
/** **LOWSEC** */ expose_balance: (args: { target: string }) => ScriptResponse
|
629
624
|
}
|
630
625
|
}
|
631
626
|
|
@@ -710,55 +705,145 @@ type Nullsec = Lowsec & PlayerNullsec & {
|
|
710
705
|
}
|
711
706
|
}
|
712
707
|
|
713
|
-
|
708
|
+
// database
|
709
|
+
type MongoPrimitive = null | boolean | number | Date | string
|
710
|
+
type MongoValue = MongoPrimitive | MongoValue[] | MongoObject
|
711
|
+
type MongoObject = { [k: string]: MongoValue, [k: `$${string}`]: never }
|
712
|
+
type MongoQueryValue = MongoPrimitive | MongoQueryValue[] | MongoQueryObject
|
713
|
+
|
714
|
+
type MongoQueryObject =
|
715
|
+
{ [k: string]: MongoQueryValue, [k: `$${string}`]: MongoValue, $type?: keyof MongoTypeStringsToTypes | (string & {}) }
|
716
|
+
|
717
|
+
type MongoTypeStringsToTypes = {
|
718
|
+
double: number
|
719
|
+
string: string
|
720
|
+
object: MongoObject
|
721
|
+
array: MongoValue[]
|
722
|
+
objectId: ObjectId
|
723
|
+
bool: boolean
|
724
|
+
date: Date
|
725
|
+
null: null
|
726
|
+
int: number
|
727
|
+
long: number
|
728
|
+
}
|
729
|
+
|
730
|
+
type MongoTypeString = keyof MongoTypeStringsToTypes
|
731
|
+
type MongoTypeNumber = -1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 127
|
732
|
+
type MongoId = Exclude<MongoPrimitive, null> | MongoObject
|
733
|
+
type MongoQueryId = Exclude<MongoPrimitive, null> | MongoQueryObject
|
734
|
+
type MongoDocument = MongoObject & { _id?: MongoId }
|
735
|
+
|
736
|
+
type MongoQueryType<TQuery extends MongoQueryObject> = {
|
737
|
+
-readonly [K in keyof TQuery]:
|
738
|
+
TQuery[K] extends MongoPrimitive ?
|
739
|
+
TQuery[K]
|
740
|
+
: TQuery[K] extends { $type: infer TType } ?
|
741
|
+
TType extends keyof MongoTypeStringsToTypes ? MongoTypeStringsToTypes[TType] : unknown
|
742
|
+
: TQuery[K] extends { $in: (infer TIn)[] } ?
|
743
|
+
TIn
|
744
|
+
: keyof TQuery[K] extends `$${string}` ?
|
745
|
+
unknown
|
746
|
+
: TQuery[K] extends { [k: string]: any } ?
|
747
|
+
MongoQueryType<TQuery[K]>
|
748
|
+
: never
|
749
|
+
}
|
714
750
|
|
715
|
-
type MongoCommandValue =
|
716
|
-
|
751
|
+
type MongoCommandValue = MongoPrimitive | MongoCommandValue[] | { [k: string]: MongoCommandValue }
|
752
|
+
type MongoArraySelectors<T extends MongoValue[] = MongoValue[]> = { $all: T, $elemMatch: T, $size: number }
|
717
753
|
|
718
|
-
type
|
719
|
-
|
754
|
+
type MongoComparisonSelectors<T extends MongoValue = MongoValue> =
|
755
|
+
{ $eq: T, $gt: T, $gte: T, $in: T[], $lt: T, $lte: T, $ne: T, $nin: T[] }
|
720
756
|
|
721
|
-
type
|
722
|
-
|
757
|
+
type MongoElementSelectors = { $exists: boolean, $type: MongoTypeNumber | MongoTypeString }
|
758
|
+
|
759
|
+
type MongoQuerySelector<T extends MongoValue> = Partial<
|
760
|
+
T extends []
|
761
|
+
? MongoArraySelectors<T> & MongoElementSelectors & MongoComparisonSelectors<T>
|
762
|
+
: MongoElementSelectors & MongoComparisonSelectors<T>
|
723
763
|
>
|
724
764
|
|
725
|
-
type
|
726
|
-
|
765
|
+
type MongoQuery<T extends MongoObject> = { [K in keyof T]?: T[K] | MongoQuerySelector<T[K]> } & { _id?: MongoId }
|
766
|
+
|
767
|
+
type MongoUpdateOperators<T extends MongoObject> = Partial<{
|
768
|
+
/* Universal operators */
|
769
|
+
$set: Partial<Record<string, MongoCommandValue> & T>
|
770
|
+
$setOnInsert: Partial<Record<string, MongoCommandValue> & T>
|
771
|
+
$unset: Partial<Record<string, ""> & T>
|
772
|
+
|
773
|
+
$rename: Partial<Record<string, string> & { [key in keyof T]: string }>
|
774
|
+
|
775
|
+
/* Date & number operators */
|
776
|
+
$inc: Record<string, number> &
|
777
|
+
{ [K in keyof T as T[K] extends number | Date ? K : never]?: T[K] extends number ? number : Date }
|
778
|
+
|
779
|
+
$mul: Record<string, number> & { [K in keyof T as T[K] extends number ? K : never]?: number }
|
780
|
+
$min: Record<string, number> & { [K in keyof T as T[K] extends number ? K : never]?: number }
|
781
|
+
$max: Record<string, number> & { [K in keyof T as T[K] extends number ? K : never]?: number }
|
782
|
+
|
783
|
+
/* Array operators */
|
784
|
+
$pop: Record<string, -1 | 1> & { [K in keyof T as T[K] extends [] ? K : never]?: -1 | 1 }
|
785
|
+
|
786
|
+
$push: Record<string, MongoCommandValue> & {
|
787
|
+
[K in keyof T as T[K] extends [] ? K : never]?: (T[K] extends (infer U)[] ? U : never)
|
788
|
+
| MongoUpdateArrayOperatorModifiers<T[K]>
|
789
|
+
}
|
790
|
+
|
791
|
+
$addToSet: Partial<Record<string, MongoCommandValue> & {
|
792
|
+
[K in keyof T as T[K] extends [] ? K : never]: (T[K] extends (infer U)[] ? U : never)
|
793
|
+
| MongoUpdateArrayOperatorUniversalModifiers<T[K]>
|
794
|
+
}>
|
795
|
+
|
796
|
+
$pull: Partial<Record<string, MongoCommandValue> & {
|
797
|
+
[K in keyof T as T[K] extends [] ? K : never]: (T[K] extends (infer U)[] ? U : never)
|
798
|
+
| MongoQuerySelector<T[K]>
|
799
|
+
}>
|
800
|
+
|
801
|
+
$pullAll: Record<string, MongoCommandValue> & { [K in keyof T as T[K] extends [] ? K : never]?: T[K] }
|
802
|
+
}>
|
803
|
+
|
804
|
+
type MongoUpdateArrayOperatorUniversalModifiers<T> = { $each?: T extends [] ? T : T[] }
|
805
|
+
|
806
|
+
type MongoUpdateArrayOperatorModifiers<T> = MongoUpdateArrayOperatorUniversalModifiers<T> &
|
807
|
+
{ $position?: number, $slice?: number, $sort?: 1 | -1 }
|
808
|
+
|
809
|
+
type MongoUpdateCommand<Schema extends MongoObject> = MongoUpdateOperators<Schema>
|
810
|
+
|
727
811
|
type SortOrder = { [key: string]: 1 | -1 | SortOrder }
|
728
812
|
|
729
|
-
type Cursor = {
|
730
|
-
/** Returns the first document that satisfies the query. */ first: () =>
|
731
|
-
/** Returns an array of documents that satisfy the query. */ array: () =>
|
813
|
+
type Cursor<T> = {
|
814
|
+
/** Returns the first document that satisfies the query. */ first: () => T | null
|
815
|
+
/** Returns an array of documents that satisfy the query. */ array: () => T[]
|
732
816
|
/** Returns the number of documents that match the query. */ count: () => number
|
733
817
|
|
734
818
|
/** Returns the first document that satisfies the query. Also makes cursor unusable. */
|
735
|
-
first_and_close: () =>
|
819
|
+
first_and_close: () => T
|
736
820
|
|
737
821
|
/** Returns an array of documents that satisfy the query. Also makes cursor unusable. */
|
738
|
-
array_and_close: () =>
|
822
|
+
array_and_close: () => T[]
|
739
823
|
|
740
824
|
/** Returns the number of documents that match the query. Also makes cursor unusable. */
|
741
825
|
count_and_close: () => number
|
742
826
|
|
743
827
|
/** Run `callback` on each document that satisfied the query. */
|
744
|
-
each: (callback: (document:
|
828
|
+
each: (callback: (document: T) => void) => null
|
745
829
|
|
746
830
|
/** Returns a new cursor with documents sorted as specified.
|
747
831
|
* A value of 1 sorts the property ascending, and -1 descending.
|
748
832
|
* @param order The way the documents are to be sorted. */
|
749
|
-
sort: (order?: SortOrder) => Cursor
|
833
|
+
sort: (order?: SortOrder) => Cursor<T>
|
750
834
|
|
751
835
|
/** Returns a new cursor without the first number of documents.
|
752
836
|
* @param count Number of documents to skip. */
|
753
|
-
skip: (count: number) => Cursor
|
837
|
+
skip: (count: number) => Cursor<T>
|
754
838
|
|
755
839
|
/** Returns a new cursor limited to a number of documents as specified.
|
756
840
|
* @param count Number of documents. */
|
757
|
-
limit: (count: number) => Cursor
|
841
|
+
limit: (count: number) => Cursor<T>
|
758
842
|
|
759
|
-
/** @param key The key of the documents. */ distinct: (
|
843
|
+
/** @param key The key of the documents. */ distinct: { (key: string): MongoValue[], (key: "_id"): MongoId[] }
|
760
844
|
/** Make cursor unusable. */ close: () => null
|
761
845
|
NumberLong: (number: number) => number
|
846
|
+
// TODO what actually is the type here?
|
762
847
|
ObjectId: () => any
|
763
848
|
}
|
764
849
|
|
@@ -769,7 +854,9 @@ type CliContext = {
|
|
769
854
|
/** The number of rows in the caller’s terminal. */ rows: number
|
770
855
|
|
771
856
|
/** The name of the script that directly called this script, or null if called on the command line or as a
|
772
|
-
* scriptor. */
|
857
|
+
* scriptor. */
|
858
|
+
calling_script: null
|
859
|
+
|
773
860
|
is_scriptor?: undefined
|
774
861
|
is_brain?: undefined
|
775
862
|
}
|
@@ -780,245 +867,215 @@ type SubscriptContext = Replace<CliContext, {
|
|
780
867
|
calling_script: string
|
781
868
|
}>
|
782
869
|
|
783
|
-
type ScriptorContext =
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
type
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
/** Subscript space that can call any script. Makes your script NULLSEC (overrides higher security levels). */
|
805
|
-
declare const $ns: Nullsec
|
870
|
+
type ScriptorContext = Replace<CliContext, { /** Whether the script is being run as a scriptor. */ is_scriptor: true }>
|
871
|
+
type BrainContext = Replace<CliContext, { /** Whether the script is being run via a bot brain. */ is_brain: true }>
|
872
|
+
|
873
|
+
// _id is always returned unless _id: false is passed
|
874
|
+
// when anyField: true is given, other fields (except _id) are omitted
|
875
|
+
|
876
|
+
type MongoProject<TDocument, TProjection> =
|
877
|
+
true extends (1 extends TProjection[keyof TProjection] ? true : TProjection[keyof TProjection]) ?
|
878
|
+
(TProjection extends { _id: false | 0 } ? {} : { _id: TDocument extends { _id: infer TId } ? TId : MongoId }) &
|
879
|
+
{
|
880
|
+
[K in
|
881
|
+
keyof TDocument as K extends keyof TProjection ? TProjection[K] extends true | 1 ? K : never : never
|
882
|
+
]: TDocument[K]
|
883
|
+
} &
|
884
|
+
{
|
885
|
+
-readonly [K in
|
886
|
+
keyof TProjection as TProjection[K] extends true | 1 ? K extends keyof TDocument ? never : K : never
|
887
|
+
]?: MongoValue
|
888
|
+
}
|
889
|
+
: { [k: string]: MongoValue } & { [K in keyof TDocument as K extends keyof TProjection ? never : K]: TDocument[K] }
|
806
890
|
|
807
|
-
|
891
|
+
type DeepFreeze<T> = { readonly [P in keyof T]: DeepFreeze<T[P]> }
|
808
892
|
|
809
|
-
|
810
|
-
|
893
|
+
declare global {
|
894
|
+
type Scriptor<TArgs extends any[] = any[]> = { name: string, call: (...args: TArgs) => unknown }
|
895
|
+
type Context = CliContext | SubscriptContext | ScriptorContext | BrainContext
|
896
|
+
type ObjectId = { $oid: string }
|
811
897
|
|
812
|
-
/** Subscript space that can call
|
813
|
-
*/
|
814
|
-
declare const $2s: typeof $ms
|
898
|
+
/** Subscript space that can call FULLSEC scripts. */ const $fs: Fullsec
|
815
899
|
|
816
|
-
/** Subscript space that can call
|
817
|
-
|
818
|
-
declare const $1s: typeof $ls
|
900
|
+
/** Subscript space that can call HIGHSEC and above scripts. Makes your script HIGHSEC (overrides FULLSEC). */
|
901
|
+
const $hs: Highsec
|
819
902
|
|
820
|
-
/** Subscript space that can call
|
821
|
-
|
903
|
+
/** Subscript space that can call MIDSEC and above scripts. Makes your script MIDSEC (overrides higher security levels).
|
904
|
+
*/
|
905
|
+
const $ms: Midsec
|
822
906
|
|
823
|
-
/** Subscript space that can call
|
824
|
-
|
825
|
-
|
826
|
-
* // remove the space betwen "@" and "s", there's only a space because otherwise vscode breaks
|
827
|
-
* export function script() {
|
828
|
-
* $s.foo.bar() // will be converted to #ms.foo.bar()
|
829
|
-
* } */
|
830
|
-
declare const $s: Nullsec
|
907
|
+
/** Subscript space that can call LOWSEC and above scripts. Makes your script LOWSEC (overrides higher security levels).
|
908
|
+
*/
|
909
|
+
const $ls: Lowsec
|
831
910
|
|
832
|
-
|
911
|
+
/** Subscript space that can call any script. Makes your script NULLSEC (overrides higher security levels). */
|
912
|
+
const $ns: Nullsec
|
833
913
|
|
834
|
-
|
835
|
-
/** Insert a document or documents into a collection.
|
836
|
-
* @param documents A document or array of documents to insert into the collection. */
|
837
|
-
i: (documents: object | object[]) => {
|
838
|
-
ok: 1
|
839
|
-
n: number
|
840
|
-
opTime: { ts: "Undefined Conversion", t: number }
|
841
|
-
electionId: "Undefined Conversion"
|
842
|
-
operationTime: "Undefined Conversion"
|
843
|
-
$clusterTime: {
|
844
|
-
clusterTime: "Undefined Conversion"
|
845
|
-
signature: { hash: "Undefined Conversion", keyId: "Undefined Conversion" }
|
846
|
-
}
|
847
|
-
}
|
914
|
+
/** Subscript space that can call FULLSEC scripts. */ const $4s: typeof $fs
|
848
915
|
|
849
|
-
/**
|
850
|
-
|
851
|
-
r: (query: Query) => {
|
852
|
-
ok: 0 | 1
|
853
|
-
n: number
|
854
|
-
opTime: { ts: "Undefined Conversion", t: number }
|
855
|
-
electionId: "Undefined Conversion"
|
856
|
-
operationTime: "Undefined Conversion"
|
857
|
-
$clusterTime: {
|
858
|
-
clusterTime: "Undefined Conversion"
|
859
|
-
signature: { hash: "Undefined Conversion", keyId: "Undefined Conversion" }
|
860
|
-
}
|
861
|
-
}
|
916
|
+
/** Subscript space that can call HIGHSEC and above scripts. Makes your script HIGHSEC (overrides FULLSEC). */
|
917
|
+
const $3s: typeof $hs
|
862
918
|
|
863
|
-
/**
|
864
|
-
|
865
|
-
|
866
|
-
f: (query?: Query, projection?: Projection) => Cursor
|
867
|
-
|
868
|
-
/** Update an existing documents in a collection.
|
869
|
-
* @param query Specifies deletion criteria using query operators.
|
870
|
-
* @param command The modifications to apply.
|
871
|
-
* {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
|
872
|
-
u: (query: Query | Query[], command: MongoCommand) => {
|
873
|
-
ok: 0 | 1
|
874
|
-
nModified: number
|
875
|
-
n: number
|
876
|
-
opTime: { ts: "Undefined Conversion", t: number }
|
877
|
-
electionId: "Undefined Conversion"
|
878
|
-
operationTime: "Undefined Conversion"
|
879
|
-
$clusterTime: {
|
880
|
-
clusterTime: "Undefined Conversion"
|
881
|
-
signature: { hash: "Undefined Conversion", keyId: "Undefined Conversion" }
|
882
|
-
}
|
883
|
-
}
|
884
|
-
|
885
|
-
/** Updates one document within the collection based on the filter.
|
886
|
-
* @param query Specifies deletion criteria using query operators.
|
887
|
-
* @param command The modifications to apply.
|
888
|
-
* {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
|
889
|
-
u1: (query: Query | Query[], command: MongoCommand) => {
|
890
|
-
ok: 0 | 1
|
891
|
-
nModified: number
|
892
|
-
n: number
|
893
|
-
opTime: {
|
894
|
-
ts: "Undefined Conversion"
|
895
|
-
t: number
|
896
|
-
}
|
897
|
-
electionId: "Undefined Conversion"
|
898
|
-
operationTime: "Undefined Conversion"
|
899
|
-
$clusterTime: {
|
900
|
-
clusterTime: "Undefined Conversion"
|
901
|
-
signature: {
|
902
|
-
hash: "Undefined Conversion"
|
903
|
-
keyId: "Undefined Conversion"
|
904
|
-
}
|
905
|
-
}
|
906
|
-
}
|
919
|
+
/** Subscript space that can call MIDSEC and above scripts. Makes your script MIDSEC (overrides higher security levels).
|
920
|
+
*/
|
921
|
+
const $2s: typeof $ms
|
907
922
|
|
908
|
-
/**
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
923
|
+
/** Subscript space that can call LOWSEC and above scripts. Makes your script LOWSEC (overrides higher security levels).
|
924
|
+
*/
|
925
|
+
const $1s: typeof $ls
|
926
|
+
|
927
|
+
/** Subscript space that can call any script. Makes your script NULLSEC (overrides higher security levels). */
|
928
|
+
const $0s: typeof $ns
|
929
|
+
|
930
|
+
/** Subscript space that can call any script. Uses seclevel provided in comment before script (defaults to NULLSEC)
|
931
|
+
* @example
|
932
|
+
* // @seclevel MIDSEC
|
933
|
+
* // note, do NOT copy paste the above line because there is a zero-width space inserted between "@" and "s"
|
934
|
+
* export function script() {
|
935
|
+
* $s.foo.bar() // will be converted to #ms.foo.bar()
|
936
|
+
* } */
|
937
|
+
const $s: Nullsec
|
938
|
+
|
939
|
+
const $db: {
|
940
|
+
/** Insert a document or documents into a collection.
|
941
|
+
* @param documents A document or array of documents to insert into the collection. */
|
942
|
+
i: <T extends MongoDocument>(documents: (T & { _id?: MongoId }) | (T & { _id?: MongoId })[]) =>
|
943
|
+
{ n: number, opTime: { t: number }, ok: 0 | 1 }[]
|
944
|
+
|
945
|
+
/** Remove documents from a collection.
|
946
|
+
* @param query Specifies deletion criteria using query operators. */
|
947
|
+
r: <T extends MongoDocument>(query: MongoQuery<T>) => { n: number, opTime: { t: number }, ok: 0 | 1 }[]
|
948
|
+
|
949
|
+
/** Find documents in a collection or view and returns a cursor to the selected documents.
|
950
|
+
* @param query Specifies deletion criteria using query operators.
|
951
|
+
* @param projection Specifies the fields to return in the documents that match the query filter. */
|
952
|
+
f: <
|
953
|
+
const TQuery extends MongoQueryObject & { _id?: MongoQueryId },
|
954
|
+
const TProjection extends { [k: string]: boolean | 0 | 1 } = {}
|
955
|
+
>(query: TQuery, projection?: TProjection) => Cursor<MongoProject<MongoQueryType<TQuery>, TProjection>>
|
956
|
+
|
957
|
+
/** Update existing documents in a collection.
|
958
|
+
* @param query Specifies deletion criteria using query operators.
|
959
|
+
* @param command The modifications to apply.
|
960
|
+
* {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
|
961
|
+
u: <T extends MongoDocument>(query: MongoQuery<T> | MongoQuery<T>[], command: MongoUpdateCommand<T>) =>
|
962
|
+
{ n: number, opTime: { t: number }, ok: 0 | 1, nModified: number }[]
|
963
|
+
|
964
|
+
/** Updates one document within the collection based on the filter.
|
965
|
+
* @param query Specifies deletion criteria using query operators.
|
966
|
+
* @param command The modifications to apply.
|
967
|
+
* {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
|
968
|
+
u1: <T extends MongoDocument>(query: MongoQuery<T> | MongoQuery<T>[], command: MongoUpdateCommand<T>) =>
|
969
|
+
{ n: number, ok: 0 | 1, opTime: { t: number }, nModified: number }[]
|
970
|
+
|
971
|
+
/** Update or insert document.
|
972
|
+
* Same as Update, but if no documents match the query, one document will be inserted based on the properties in
|
973
|
+
* both the query and the command.
|
974
|
+
* The `$setOnInsert` operator is useful to set defaults.
|
975
|
+
* @param query Specifies deletion criteria using query operators.
|
976
|
+
* @param command The modifications to apply.
|
977
|
+
* {@link https://docs.mongodb.com/manual/reference/method/db.collection.update/#parameters} */
|
978
|
+
us: <T extends MongoDocument>(query: MongoQuery<T> | MongoQuery<T>[], command: MongoUpdateCommand<T>) =>
|
979
|
+
{ n: number, ok: 0 | 1, opTime: { t: number }, nModified: number }[]
|
980
|
+
|
981
|
+
ObjectId: () => ObjectId
|
926
982
|
}
|
927
983
|
|
928
|
-
|
984
|
+
/** Debug Log.
|
985
|
+
*
|
986
|
+
* If `$D()` is called in a script you own, the `return` value of the top level script is suppressed and instead an
|
987
|
+
* array of every `$D()`’d entry is printed.
|
988
|
+
* This lets you use `$D()` like `console.log()`.
|
989
|
+
*
|
990
|
+
* `$D()` in scripts not owned by you are not shown but the `return` value always is.
|
991
|
+
*
|
992
|
+
* `$D()` returns the first argument so `$D("Hello, World!") evaluates to `"Hello, World!"` as if the `$D` text wasn't
|
993
|
+
* there.
|
994
|
+
*
|
995
|
+
* `$D()`’d items are returned even if the script times out or errors. */
|
996
|
+
function $D<T>(args: T): T
|
997
|
+
|
998
|
+
/** Function Multi-Call Lock.
|
999
|
+
*
|
1000
|
+
* This is used by escrow to ensure that it is only used once in script execution.
|
1001
|
+
*
|
1002
|
+
* The first time (per-script) `$FMCL` is encountered, it returns `undefined`, every other time it `return`s `true`.
|
1003
|
+
*
|
1004
|
+
* @example
|
1005
|
+
* if ($FMCL)
|
1006
|
+
* return { ok: false, msg: "This script can only be used once per script execution." }
|
1007
|
+
*
|
1008
|
+
* // all code here will only run once */
|
1009
|
+
const $FMCL: undefined | true
|
1010
|
+
|
1011
|
+
/** Per-script mutable "global" persistent object that is discarded at the end of top level script execution.
|
1012
|
+
*
|
1013
|
+
* `$G` persists between script calls until the end of the main script run making it useful for caching db entries when
|
1014
|
+
* your script is a subscript.
|
1015
|
+
* @example
|
1016
|
+
* if (!$G.dbCache)
|
1017
|
+
* $G.dbCache = $db.f({ whatever: true }).first() */
|
1018
|
+
const $G: Record<string | symbol, any>
|
1019
|
+
|
1020
|
+
/** This contains a JS timestamp (not Date) set immediately before your code begins running.
|
1021
|
+
* @example
|
1022
|
+
* $D(Date.now() - _START) // milliseconds left of run time
|
1023
|
+
*/
|
1024
|
+
const _START: number
|
1025
|
+
|
1026
|
+
/** This contains a JS timestamp (not Date) set immediately before your code begins running.
|
1027
|
+
* @example
|
1028
|
+
* $D(Date.now() - _ST) // milliseconds left of run time */
|
1029
|
+
const _ST: typeof _START
|
1030
|
+
|
1031
|
+
/** JavaScript timestamp for the end of the script run (`_START + _TIMEOUT`). */ const _END: number
|
1032
|
+
|
1033
|
+
/** The number of milliseconds a script can run for. Normally `5000` though it has been known to change. */
|
1034
|
+
const _TIMEOUT: number
|
1035
|
+
|
1036
|
+
/** The number of milliseconds a script can run for. Normally `5000` though it has been known to change. */
|
1037
|
+
const _TO: typeof _TIMEOUT
|
1038
|
+
|
1039
|
+
/** The source code of this script as a string. */ const _SOURCE: string
|
1040
|
+
/** A unix timestamp of the date this script was built. */ const _BUILD_DATE: number
|
1041
|
+
|
1042
|
+
/** The user this script has been uploaded to.
|
1043
|
+
*
|
1044
|
+
* Shorter alternative to `context.this_script.split(".")[0].
|
1045
|
+
*
|
1046
|
+
* In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
|
1047
|
+
const _SCRIPT_USER: string
|
1048
|
+
|
1049
|
+
/** @deprecated Use `_SCRIPT_SUBNAME` instead. */
|
1050
|
+
const _SCRIPT_NAME: string
|
1051
|
+
|
1052
|
+
/** The name of this script excluding the user and `.`.
|
1053
|
+
*
|
1054
|
+
* e.g. in the script `foo.bar`, `_SCRIPT_NAME` is `bar`.
|
1055
|
+
*
|
1056
|
+
* Shorter alternative to `context.this_script.split(".")[1].
|
1057
|
+
*
|
1058
|
+
* In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
|
1059
|
+
const _SCRIPT_SUBNAME: string
|
1060
|
+
|
1061
|
+
/** The full name of this script equivilent to `context.this_script` but should use less characters.
|
1062
|
+
*
|
1063
|
+
* In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
|
1064
|
+
const _FULL_SCRIPT_NAME: string
|
1065
|
+
|
1066
|
+
/** The seclevel of this script as a number.
|
1067
|
+
*
|
1068
|
+
* In rare cases where it's not known at build time, it's `-1`. */
|
1069
|
+
const _SECLEVEL: -1 | 0 | 1 | 2 | 3 | 4
|
1070
|
+
|
1071
|
+
/** Recursively
|
1072
|
+
* [`Object.freeze()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
|
1073
|
+
* an object and its properties' objects and its properties' objects and so on.
|
1074
|
+
*
|
1075
|
+
* [Official Hackmud Wiki](https://wiki.hackmud.com/scripting/extensions/deep_freeze) */
|
1076
|
+
const DEEP_FREEZE: <T>(value: T) => DeepFreeze<T>
|
1077
|
+
|
1078
|
+
const _RUN_ID: string
|
929
1079
|
}
|
930
1080
|
|
931
|
-
|
932
|
-
*
|
933
|
-
* If `$D()` is called in a script you own, the `return` value of the top level script is suppressed and instead an
|
934
|
-
* array of every `$D()`’d entry is printed.
|
935
|
-
* This lets you use `$D()` like `console.log()`.
|
936
|
-
*
|
937
|
-
* `$D()` in scripts not owned by you are not shown but the `return` value always is.
|
938
|
-
*
|
939
|
-
* `$D()` returns the first argument so `$D("Hello, World!") evaluates to `"Hello, World!"` as if the `$D` text wasn't
|
940
|
-
* there.
|
941
|
-
*
|
942
|
-
* `$D()`’d items are returned even if the script times out or errors. */
|
943
|
-
declare function $D<T>(args: T): T
|
944
|
-
|
945
|
-
/** Function Multi-Call Lock.
|
946
|
-
*
|
947
|
-
* This is used by escrow to ensure that it is only used once in script execution.
|
948
|
-
*
|
949
|
-
* The first time (per-script) `$FMCL` is encountered, it returns `undefined`, every other time it `return`s `true`.
|
950
|
-
*
|
951
|
-
* @example
|
952
|
-
* if ($FMCL)
|
953
|
-
* return { ok: false, msg: "This script can only be used once per script execution." }
|
954
|
-
*
|
955
|
-
* // all code here will only run once */
|
956
|
-
declare const $FMCL: undefined | true
|
957
|
-
|
958
|
-
/** Per-script mutable "global" persistent object that is discarded at the end of top level script execution.
|
959
|
-
*
|
960
|
-
* `$G` persists between script calls until the end of the main script run making it useful for caching db entries when
|
961
|
-
* your script is a subscript.
|
962
|
-
* @example
|
963
|
-
* if (!$G.dbCache)
|
964
|
-
* $G.dbCache = $db.f({ whatever: true }).first() */
|
965
|
-
declare const $G: Record<string | symbol, any>
|
966
|
-
|
967
|
-
/** This contains a JS timestamp (not Date) set immediately before your code begins running.
|
968
|
-
* @example
|
969
|
-
* $D(Date.now() - _START) // milliseconds left of run time
|
970
|
-
*/
|
971
|
-
declare const _START: number
|
972
|
-
|
973
|
-
/** This contains a JS timestamp (not Date) set immediately before your code begins running.
|
974
|
-
* @example
|
975
|
-
* $D(Date.now() - _ST) // milliseconds left of run time */
|
976
|
-
declare const _ST: typeof _START
|
977
|
-
|
978
|
-
/** JavaScript timestamp for the end of the script run (`_START + _TIMEOUT`). */ declare const _END: number
|
979
|
-
|
980
|
-
/** The number of milliseconds a script can run for. Normally `5000` though it has been known to change. */
|
981
|
-
declare const _TIMEOUT: number
|
982
|
-
|
983
|
-
/** The number of milliseconds a script can run for. Normally `5000` though it has been known to change. */
|
984
|
-
declare const _TO: typeof _TIMEOUT
|
985
|
-
|
986
|
-
/** The source code of this script as a string. */ declare const _SOURCE: string
|
987
|
-
/** A unix timestamp of the date this script was built. */ declare const _BUILD_DATE: number
|
988
|
-
|
989
|
-
/** The user this script has been uploaded to.
|
990
|
-
*
|
991
|
-
* Shorter alternative to `context.this_script.split(".")[0].
|
992
|
-
*
|
993
|
-
* In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
|
994
|
-
declare const _SCRIPT_USER: string
|
995
|
-
|
996
|
-
/** The name of this script excluding the user and `.`.
|
997
|
-
*
|
998
|
-
* e.g. in the script `foo.bar`, `_SCRIPT_NAME` is `bar`.
|
999
|
-
*
|
1000
|
-
* Shorter alternative to `context.this_script.split(".")[1].
|
1001
|
-
*
|
1002
|
-
* In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
|
1003
|
-
declare const _SCRIPT_NAME: string
|
1004
|
-
|
1005
|
-
/** The full name of this script equivilent to `context.this_script` but should use less characters.
|
1006
|
-
*
|
1007
|
-
* In rare cases where it's not known at build time, it's `"UNKNOWN"`. */
|
1008
|
-
declare const _FULL_SCRIPT_NAME: string
|
1009
|
-
|
1010
|
-
/** The seclevel of this script as a number.
|
1011
|
-
*
|
1012
|
-
* In rare cases where it's not known at build time, it's `-1`. */
|
1013
|
-
declare const _SECLEVEL: -1 | 0 | 1 | 2 | 3 | 4
|
1014
|
-
|
1015
|
-
type DeepFreeze<T> = { readonly [P in keyof T]: DeepFreeze<T[P]> }
|
1016
|
-
|
1017
|
-
/** Recursively
|
1018
|
-
* [`Object.freeze()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
|
1019
|
-
* an object and its properties' objects and its properties' objects and so on.
|
1020
|
-
*
|
1021
|
-
* [Official Hackmud Wiki](https://wiki.hackmud.com/scripting/extensions/deep_freeze) */
|
1022
|
-
declare const DEEP_FREEZE: <T>(value: T) => DeepFreeze<T>
|
1023
|
-
|
1024
|
-
declare const _RUN_ID: string
|
1081
|
+
export {}
|