hackmud-script-manager 0.21.1-0e9f98d → 0.21.1-1c438e4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/hsm.js +2 -2
- package/env.d.ts +13 -12
- package/package.json +1 -1
- package/processScript/preprocess.js +3 -15
- package/push.js +3 -1
- package/watch.js +13 -4
package/bin/hsm.js
CHANGED
@@ -64,7 +64,7 @@ if (process.version.startsWith("v21.")) {
|
|
64
64
|
)
|
65
65
|
}
|
66
66
|
if ("v" == commands[0] || "version" == commands[0] || popOption("version", "v")?.value) {
|
67
|
-
console.log("0.21.1-
|
67
|
+
console.log("0.21.1-1c438e4")
|
68
68
|
process.exit()
|
69
69
|
}
|
70
70
|
let warnedDeprecatedEmitDtsAlias = !1
|
@@ -412,7 +412,7 @@ function logHelp() {
|
|
412
412
|
default:
|
413
413
|
console.log(
|
414
414
|
colourS(
|
415
|
-
`${colourJ("Hackmud Script Manager")}\n${colourN("Version") + colourS(": ") + colourV("0.21.1-
|
415
|
+
`${colourJ("Hackmud Script Manager")}\n${colourN("Version") + colourS(": ") + colourV("0.21.1-1c438e4")}\n\n${colourA("Commands:")}\n${colourL("push")}\n ${pushCommandDescription}\n${colourL("minify")}\n Minify a script file on the spot\n${colourL("emit-dts")}\n Generate a type declaration file for a directory of scripts\n${colourL("sync-macros")}\n Sync macros across all hackmud users\n${colourL("pull")}\n Pull a script a from a hackmud user's script directory\n\n${colourA("Options:")}\n${colourN("--help")}\n Can be used on any command e.g. ${colourC("hsm")} ${colourL("push")} ${colourN("--help")} to show helpful information`
|
416
416
|
)
|
417
417
|
)
|
418
418
|
}
|
package/env.d.ts
CHANGED
@@ -189,7 +189,7 @@ type Fullsec = Subscripts & PlayerFullsec & {
|
|
189
189
|
|
190
190
|
/** @returns A random element from `array`, selected with a random number generated using `rng`
|
191
191
|
* (defaults to `Math.random`). */
|
192
|
-
sample: (array:
|
192
|
+
sample: <T>(array: T[], rng?: ()=>number) => T
|
193
193
|
|
194
194
|
/** @returns Whether two MongoDB `ObjectId`s are equivalent. */ are_ids_eq: (id1: any, id2: any) => boolean
|
195
195
|
/** Convert a MongoDB `ObjectId` to a string. */ id_to_str: (id: string | {$oid: string}) => any
|
@@ -270,7 +270,7 @@ type Fullsec = Subscripts & PlayerFullsec & {
|
|
270
270
|
map: <T, U>(array: T[], callback: (index: number, value: T) => U) => U[]
|
271
271
|
|
272
272
|
/** @returns A new object derived from `obj` with only the keys specified in `keys`. */
|
273
|
-
pick: (obj:
|
273
|
+
pick: <TObj extends object, TKeys extends keyof TObj>(obj: TObj, keys: TKeys[]) => { [K in TKeys]: TObj[K] }
|
274
274
|
|
275
275
|
/** @returns An array with the elements from `array` in a random order. */ shuffle: <T>(array: T[]) => T[]
|
276
276
|
|
@@ -298,7 +298,7 @@ type Fullsec = Subscripts & PlayerFullsec & {
|
|
298
298
|
security_level_names: [ "NULLSEC", "LOWSEC", "MIDSEC", "HIGHSEC", "FULLSEC" ]
|
299
299
|
|
300
300
|
/** @returns The string name of a numeric security level. */
|
301
|
-
get_security_level_name: (security_level: number) =>
|
301
|
+
get_security_level_name: (security_level: number) => string
|
302
302
|
|
303
303
|
/** @param result The return value of a call to `$db.i()` or `$db.r()`.
|
304
304
|
* @param nModified The expected value of `result.nModified`.
|
@@ -703,14 +703,14 @@ type MongoObject = { [k: string]: MongoValue, [k: `$${string}`]: never }
|
|
703
703
|
type MongoQueryValue = MongoPrimitive | MongoQueryValue[] | MongoQueryObject
|
704
704
|
|
705
705
|
type MongoQueryObject =
|
706
|
-
{ [k: string]: MongoQueryValue, [k: `$${string}`]: MongoValue
|
706
|
+
{ [k: string]: MongoQueryValue, [k: `$${string}`]: MongoValue } & { $type?: keyof MongoTypeStringsToTypes | (string & {}) }
|
707
707
|
|
708
708
|
type MongoTypeStringsToTypes = {
|
709
709
|
double: number
|
710
710
|
string: string
|
711
711
|
object: MongoObject
|
712
712
|
array: MongoValue[]
|
713
|
-
objectId:
|
713
|
+
objectId: MongoObjectId
|
714
714
|
bool: boolean
|
715
715
|
date: Date
|
716
716
|
null: null
|
@@ -720,8 +720,8 @@ type MongoTypeStringsToTypes = {
|
|
720
720
|
|
721
721
|
type MongoTypeString = keyof MongoTypeStringsToTypes
|
722
722
|
type MongoTypeNumber = -1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 127
|
723
|
-
type MongoId = Exclude<MongoPrimitive, null> | MongoObject
|
724
|
-
type MongoQueryId = Exclude<MongoPrimitive, null> | MongoQueryObject
|
723
|
+
type MongoId = Exclude<MongoPrimitive, null | false> | MongoObjectId | MongoObject
|
724
|
+
type MongoQueryId = Exclude<MongoPrimitive, null | false> | MongoObjectId | MongoQueryObject
|
725
725
|
type MongoDocument = MongoObject & { _id?: MongoId }
|
726
726
|
|
727
727
|
type MongoQueryType<TQuery extends MongoQueryObject> = {
|
@@ -865,8 +865,8 @@ type BrainContext = Replace<CliContext, { /** Whether the script is being run vi
|
|
865
865
|
// when anyField: true is given, other fields (except _id) are omitted
|
866
866
|
|
867
867
|
type MongoProject<TDocument, TProjection> =
|
868
|
-
|
869
|
-
|
868
|
+
(TProjection extends { _id: false | 0 } ? {} : { _id: TDocument extends { _id: infer TId } ? TId : MongoId }) & (
|
869
|
+
true extends (1 extends TProjection[keyof TProjection] ? true : TProjection[keyof TProjection]) ?
|
870
870
|
{
|
871
871
|
[K in
|
872
872
|
keyof TDocument as K extends keyof TProjection ? TProjection[K] extends true | 1 ? K : never : never
|
@@ -877,7 +877,8 @@ type MongoProject<TDocument, TProjection> =
|
|
877
877
|
keyof TProjection as TProjection[K] extends true | 1 ? K extends keyof TDocument ? never : K : never
|
878
878
|
]?: MongoValue
|
879
879
|
}
|
880
|
-
|
880
|
+
: { [k: string]: MongoValue } & { [K in keyof TDocument as K extends keyof TProjection ? never : K]: TDocument[K] }
|
881
|
+
)
|
881
882
|
|
882
883
|
type DeepFreeze<T> = { readonly [P in keyof T]: DeepFreeze<T[P]> }
|
883
884
|
|
@@ -887,7 +888,7 @@ declare global {
|
|
887
888
|
type ScriptResponse<T = unknown> = ScriptSuccess<T> | ScriptFailure
|
888
889
|
type Scriptor<TArgs = any> = { name: string, call: (args: TArgs) => unknown }
|
889
890
|
type Context = CliContext | SubscriptContext | ScriptorContext | BrainContext
|
890
|
-
type
|
891
|
+
type MongoObjectId = { $oid: string }
|
891
892
|
|
892
893
|
interface PlayerFullsec {}
|
893
894
|
interface PlayerHighsec {}
|
@@ -978,7 +979,7 @@ declare global {
|
|
978
979
|
us: <T extends MongoDocument>(query: MongoQuery<T> | MongoQuery<T>[], command: MongoUpdateCommand<T>) =>
|
979
980
|
{ n: number, ok: 0 | 1, opTime: { t: number }, nModified: number }[]
|
980
981
|
|
981
|
-
ObjectId: () =>
|
982
|
+
ObjectId: () => MongoObjectId
|
982
983
|
}
|
983
984
|
|
984
985
|
/** Debug Log.
|
package/package.json
CHANGED
@@ -4,23 +4,11 @@ import babelTraverse from "@babel/traverse"
|
|
4
4
|
import t from "@babel/types"
|
5
5
|
import { assert } from "@samual/lib/assert"
|
6
6
|
import { spliceString } from "@samual/lib/spliceString"
|
7
|
-
import { tokenizer, tokTypes } from "acorn"
|
8
7
|
import { resolve } from "import-meta-resolve"
|
9
8
|
const { default: traverse } = babelTraverse,
|
10
|
-
{ default: generate } = babelGenerator
|
11
|
-
SUBSCRIPT_PREFIXES = ["s", "fs", "4s", "hs", "3s", "ms", "2s", "ls", "1s", "ns", "0s"]
|
9
|
+
{ default: generate } = babelGenerator
|
12
10
|
async function preprocess(code, { uniqueId = "00000000000" } = {}) {
|
13
|
-
assert(/^\w{11}$/.test(uniqueId), "src/processScript/preprocess.ts:
|
14
|
-
const tokensIterable = tokenizer(code, { ecmaVersion: "latest" })
|
15
|
-
for (const token of tokensIterable) {
|
16
|
-
assert("value" in token, "src/processScript/preprocess.ts:31:28")
|
17
|
-
if (token.type != tokTypes.privateId) continue
|
18
|
-
assert("string" == typeof token.value, "src/processScript/preprocess.ts:36:42")
|
19
|
-
if (!SUBSCRIPT_PREFIXES.includes(token.value)) continue
|
20
|
-
const nextToken = tokensIterable.getToken()
|
21
|
-
if (nextToken.type != tokTypes._in && nextToken.type != tokTypes.dot)
|
22
|
-
throw SyntaxError("Subscripts must be in the form of #fs.foo.bar")
|
23
|
-
}
|
11
|
+
assert(/^\w{11}$/.test(uniqueId), "src/processScript/preprocess.ts:23:36")
|
24
12
|
const sourceCode = code
|
25
13
|
let lengthBefore, file, program
|
26
14
|
do {
|
@@ -59,7 +47,7 @@ async function preprocess(code, { uniqueId = "00000000000" } = {}) {
|
|
59
47
|
})
|
60
48
|
break
|
61
49
|
} catch (error_) {
|
62
|
-
assert(error_ instanceof SyntaxError, "src/processScript/preprocess.ts:
|
50
|
+
assert(error_ instanceof SyntaxError, "src/processScript/preprocess.ts:67:42")
|
63
51
|
error = error_
|
64
52
|
}
|
65
53
|
if ("BABEL_PARSER_SYNTAX_ERROR" != error.code || "PrivateInExpectedIn" != error.reasonCode) {
|
package/push.js
CHANGED
@@ -70,7 +70,9 @@ async function push(
|
|
70
70
|
])
|
71
71
|
if (sourceFolder instanceof Error) return sourceFolder
|
72
72
|
if (hackmudFolder instanceof Error) return hackmudFolder
|
73
|
-
const sourceFolderFolders = sourceFolder.filter(
|
73
|
+
const sourceFolderFolders = sourceFolder.filter(
|
74
|
+
({ name, stats }) => stats.isDirectory() && /^[a-z_][a-z\d_]{0,24}$/.test(name)
|
75
|
+
),
|
74
76
|
allUsers = new Set([
|
75
77
|
...scripts
|
76
78
|
.map(scriptName => ensure(scriptName.split(".")[0], "src/push.ts:85:65"))
|
package/watch.js
CHANGED
@@ -133,10 +133,19 @@ async function watch(
|
|
133
133
|
try {
|
134
134
|
;({ script: minifiedCode, warnings } = await processScript(
|
135
135
|
await readFile(filePath, { encoding: "utf8" }),
|
136
|
-
{
|
136
|
+
{
|
137
|
+
minify,
|
138
|
+
scriptUser: !0,
|
139
|
+
scriptName,
|
140
|
+
uniqueId,
|
141
|
+
filePath,
|
142
|
+
mangleNames,
|
143
|
+
forceQuineCheats,
|
144
|
+
rootFolderPath
|
145
|
+
}
|
137
146
|
))
|
138
147
|
} catch (error) {
|
139
|
-
assert(error instanceof Error, "src/watch.ts:
|
148
|
+
assert(error instanceof Error, "src/watch.ts:160:36")
|
140
149
|
onPush?.({ path, users: [], characterCount: 0, error, warnings: [] })
|
141
150
|
return
|
142
151
|
}
|
@@ -184,7 +193,7 @@ async function watch(
|
|
184
193
|
rootFolderPath
|
185
194
|
}))
|
186
195
|
} catch (error) {
|
187
|
-
assert(error instanceof Error, "src/watch.ts:
|
196
|
+
assert(error instanceof Error, "src/watch.ts:207:35")
|
188
197
|
onPush?.({ path, users: [], characterCount: 0, error, warnings: [] })
|
189
198
|
return
|
190
199
|
}
|
@@ -199,7 +208,7 @@ async function watch(
|
|
199
208
|
try {
|
200
209
|
await writeFile(typeDeclarationPath, typeDeclaration)
|
201
210
|
} catch (error) {
|
202
|
-
assert(error instanceof Error, "src/watch.ts:
|
211
|
+
assert(error instanceof Error, "src/watch.ts:240:35")
|
203
212
|
if ("EISDIR" != error.code) throw error
|
204
213
|
typeDeclarationPath = resolve(typeDeclarationPath, "player.d.ts")
|
205
214
|
await writeFile(typeDeclarationPath, typeDeclaration)
|