hackmud-script-manager 0.21.1-93e7bef → 0.21.1-c61c24e
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 +3 -3
 - package/package.json +3 -2
 - package/processScript/index.js +2 -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-c61c24e")
         
     | 
| 
       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-c61c24e")}\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`.
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "hackmud-script-manager",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "0.21.1- 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "0.21.1-c61c24e",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "description": "Script manager for game hackmud, with minification, TypeScript support, and player script type definition generation.",
         
     | 
| 
       5 
5 
     | 
    
         
             
              "keywords": [
         
     | 
| 
       6 
6 
     | 
    
         
             
                "api",
         
     | 
| 
         @@ -23,7 +23,8 @@ 
     | 
|
| 
       23 
23 
     | 
    
         
             
              "author": "Samual Norman <me@samual.uk> (https://samual.uk/)",
         
     | 
| 
       24 
24 
     | 
    
         
             
              "contributors": [
         
     | 
| 
       25 
25 
     | 
    
         
             
                "Daniel Swann (https://github.com/danswann)",
         
     | 
| 
       26 
     | 
    
         
            -
                "Longboyy"
         
     | 
| 
      
 26 
     | 
    
         
            +
                "Longboyy",
         
     | 
| 
      
 27 
     | 
    
         
            +
                "Helloman892"
         
     | 
| 
       27 
28 
     | 
    
         
             
              ],
         
     | 
| 
       28 
29 
     | 
    
         
             
              "main": "index.js",
         
     | 
| 
       29 
30 
     | 
    
         
             
              "repository": {
         
     | 
    
        package/processScript/index.js
    CHANGED
    
    | 
         @@ -210,7 +210,8 @@ async function processScript( 
     | 
|
| 
       210 
210 
     | 
    
         
             
            				{
         
     | 
| 
       211 
211 
     | 
    
         
             
            					name: "hackmud-script-manager",
         
     | 
| 
       212 
212 
     | 
    
         
             
            					async transform(code, id) {
         
     | 
| 
       213 
     | 
    
         
            -
            						if (!id.includes("/node_modules/")) 
     | 
| 
      
 213 
     | 
    
         
            +
            						if (id.startsWith("/") && !id.includes("/node_modules/"))
         
     | 
| 
      
 214 
     | 
    
         
            +
            							return (await preprocess(code, { uniqueId })).code
         
     | 
| 
       214 
215 
     | 
    
         
             
            						let program
         
     | 
| 
       215 
216 
     | 
    
         
             
            						traverse(parse(code, { sourceType: "module" }), {
         
     | 
| 
       216 
217 
     | 
    
         
             
            							Program(path) {
         
     | 
| 
         @@ -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)
         
     |