hackmud-script-manager 0.19.1-98e81f8 → 0.19.1-bf4dc4a
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 +74 -81
- package/generateTypeDeclaration.js +17 -17
- package/index.js +2 -1
- package/package.json +3 -3
- package/processScript/index.js +19 -2
- package/processScript/minify.js +2 -2
- package/processScript/preprocess.js +1 -1
- package/processScript/transform.js +121 -109
- package/push.js +43 -37
- package/syncMacros.js +4 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/watch.js +14 -15
package/bin/hsm.js
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
import { Cache } from "@samual/lib/Cache"
|
3
3
|
import { assert } from "@samual/lib/assert"
|
4
|
+
import { catchError } from "@samual/lib/catchError"
|
4
5
|
import { countHackmudCharacters } from "@samual/lib/countHackmudCharacters"
|
6
|
+
import { getDeepObjectProperty } from "@samual/lib/getDeepObjectProperty"
|
7
|
+
import { isRecord } from "@samual/lib/isRecord"
|
8
|
+
import { setDeepObjectProperty } from "@samual/lib/setDeepObjectProperty"
|
5
9
|
import { writeFilePersistent } from "@samual/lib/writeFilePersistent"
|
6
10
|
import { readFile, writeFile, mkdir, rmdir } from "fs/promises"
|
7
11
|
import { homedir } from "os"
|
@@ -10,6 +14,7 @@ import { supportedExtensions } from "../constants.js"
|
|
10
14
|
import { generateTypeDeclaration } from "../generateTypeDeclaration.js"
|
11
15
|
import { pull } from "../pull.js"
|
12
16
|
import { syncMacros } from "../syncMacros.js"
|
17
|
+
import "@samual/lib/readDirectoryWithStats"
|
13
18
|
import "@samual/lib/copyFilePersistent"
|
14
19
|
const configDirectoryPath = resolve(homedir(), ".config"),
|
15
20
|
configFilePath = resolve(configDirectoryPath, "hsm.json"),
|
@@ -28,8 +33,8 @@ const configDirectoryPath = resolve(homedir(), ".config"),
|
|
28
33
|
),
|
29
34
|
logHelp = () => {
|
30
35
|
const pushCommandDescription = "Push scripts from a directory to hackmud user's scripts directories",
|
31
|
-
|
32
|
-
console.log(colourN("Version") + colourS(": ") + colourV("0.19.1-
|
36
|
+
forceQuineCheatsOptionDescription = `Force quine cheats on. Use ${colourN("--force-quine-cheats")}=${colourV("false")} to force off`
|
37
|
+
console.log(colourN("Version") + colourS(": ") + colourV("0.19.1-bf4dc4a"))
|
33
38
|
switch (commands[0]) {
|
34
39
|
case "config":
|
35
40
|
switch (commands[1]) {
|
@@ -56,18 +61,12 @@ const configDirectoryPath = resolve(homedir(), ".config"),
|
|
56
61
|
)
|
57
62
|
}
|
58
63
|
break
|
59
|
-
case "push":
|
60
|
-
console.log(
|
61
|
-
colourS(
|
62
|
-
`\n${colourJ(pushCommandDescription)}\n\n${colourA("Usage:")}\n${colourC("hsm")} ${colourL(commands[0])} ${colourB("<directory> [<script user>.<script name>...]")}\n\n${colourA("Options:")}\n${colourN("--skip-minify")}\n Skip minification to produce a readable script\n${colourN("--mangle-names")}\n ${mangleNamesOptionDescription}\n${colourN("--force-quine-cheats")}\n Force quine cheats even if the character count is higher`
|
63
|
-
)
|
64
|
-
)
|
65
|
-
break
|
66
64
|
case "dev":
|
67
65
|
case "watch":
|
66
|
+
case "push":
|
68
67
|
console.log(
|
69
68
|
colourS(
|
70
|
-
|
69
|
+
`\n${colourJ("push" == commands[0] ? pushCommandDescription : "Watch a directory and push a script when modified")}\n\n${colourA("Usage:")}\n${colourC("hsm")} ${colourL(commands[0])} ${colourB('<directory> ["<script user>.<script name>"...]')}\n\n${colourA("Arguments:")}\n${colourB("<directory>")}\n The source directory containing your scripts\n${colourB("<script user>")}\n A user to push script(s) to. Can be set to wild card (${colourV("*")}) which will try\n and discover users to push to\n${colourB("<script name>")}\n Name of a script to push. Can be set to wild card (${colourV("*")}) to find all scripts\n\n${colourA("Options:")}\n${colourN("--no-minify")}\n Skip minification to produce a "readable" script\n${colourN("--mangle-names")}\n Reduce character count further but lose function names in error call stacks\n${colourN("--force-quine-cheats")}\n ${forceQuineCheatsOptionDescription}\n${"push" == commands[0] ? "" : `${colourN("--type-declaration-path")}=${colourB("<path>")}\n Path to generate a type declaration file for the scripts\n`}\n${colourA("Examples:")}\n${colourC("hsm")} ${colourL(commands[0])} ${colourV("src")}\n\tPushes all scripts found in ${colourV("src")} folder to all users\n${colourC("hsm")} ${colourL(commands[0])} ${colourV("src")} ${colourC("foo")}${colourV(".")}${colourL("bar")}\n Pushes a script named ${colourL("bar")} found in ${colourV("src")} folder to user ${userColours.get("foo")}\n${colourC("hsm")} ${colourL(commands[0])} ${colourV("src")} ${colourC("foo")}${colourV(".")}${colourL("bar")} ${colourC("baz")}${colourV(".")}${colourL("qux")}\n Multiple can be specified.\n${colourC("hsm")} ${colourL(commands[0])} ${colourV("src")} ${colourC("foo")}${colourV(".")}${colourL("*")}\n\tPushes all scripts found in ${colourV("src")} folder to user ${userColours.get("foo")}\n${colourC("hsm")} ${colourL(commands[0])} ${colourV("src")} ${colourC("*")}${colourV(".")}${colourL("foo")}\n\tPushes all scripts named ${colourL("foo")} found in ${colourV("src")} folder to all user\n${colourC("hsm")} ${colourL(commands[0])} ${colourV("src")} ${colourC("*")}${colourV(".")}${colourL("*")}\n\tPushes all scripts found in ${colourV("src")} folder to all users`
|
71
70
|
)
|
72
71
|
)
|
73
72
|
break
|
@@ -82,7 +81,7 @@ const configDirectoryPath = resolve(homedir(), ".config"),
|
|
82
81
|
case "golf":
|
83
82
|
console.log(
|
84
83
|
colourS(
|
85
|
-
|
84
|
+
`\n${colourJ("Minify a script file on the spot")}\n\n${colourA("Usage:")}\n${colourC("hsm")} ${colourL(commands[0])} ${colourB("<target> [output path]")}\n\n${colourA("Options:")}\n${colourN("--no-minify")}\n Skip minification to produce a "readable" script\n${colourN("--mangle-names")}\n Reduce character count further but lose function names in error call stacks\n${colourN("--force-quine-cheats")}\n ${forceQuineCheatsOptionDescription}\n${colourN("--watch")}\n Watch for changes`
|
86
85
|
)
|
87
86
|
)
|
88
87
|
break
|
@@ -92,7 +91,7 @@ const configDirectoryPath = resolve(homedir(), ".config"),
|
|
92
91
|
case "gen-types":
|
93
92
|
console.log(
|
94
93
|
colourS(
|
95
|
-
`${
|
94
|
+
`${colourJ("Generate a type declaration file for a directory of scripts")}\n\n${colourA("Usage:")}\n${colourC("hsm")} ${colourL(commands[0])} ${colourB("<directory> [output path]")}`
|
96
95
|
)
|
97
96
|
)
|
98
97
|
break
|
@@ -102,20 +101,27 @@ const configDirectoryPath = resolve(homedir(), ".config"),
|
|
102
101
|
default:
|
103
102
|
console.log(
|
104
103
|
colourS(
|
105
|
-
`\n${colourJ("Hackmud Script Manager")}\n\n${colourA("Commands:")}\n${colourL("push")}\n ${pushCommandDescription}\n${colourL("
|
104
|
+
`\n${colourJ("Hackmud Script Manager")}\n\n${colourA("Commands:")}\n${colourL("push")}\n ${pushCommandDescription}\n${colourL("dev")}\n Watch a directory and push a script when modified\n${colourL("golf")}\n Minify a script file on the spot\n${colourL("gen-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("config")}\n Modify and view the config file\n${colourL("pull")}\n Pull a script a from a hackmud user's script directory`
|
106
105
|
)
|
107
106
|
)
|
108
107
|
}
|
109
108
|
},
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
109
|
+
updateConfig = async config => {
|
110
|
+
const json = JSON.stringify(config, void 0, "\t")
|
111
|
+
configDidNotExist && log("Creating config file at " + configFilePath)
|
112
|
+
await writeFile(configFilePath, json).catch(async error => {
|
113
|
+
switch (error.code) {
|
114
|
+
case "EISDIR":
|
115
|
+
await rmdir(configFilePath)
|
116
|
+
break
|
117
|
+
case "ENOENT":
|
118
|
+
await mkdir(configDirectoryPath)
|
119
|
+
break
|
120
|
+
default:
|
121
|
+
throw error
|
122
|
+
}
|
123
|
+
await writeFile(configFilePath, json)
|
124
|
+
})
|
119
125
|
},
|
120
126
|
logInfo = ({ file, users, minLength, error }, hackmudPath) => {
|
121
127
|
error ?
|
@@ -147,7 +153,7 @@ for (const argument of process.argv.slice(2))
|
|
147
153
|
else for (const option of key.slice(1)) options.set(option, value)
|
148
154
|
} else commands.push(argument)
|
149
155
|
if ("v" == commands[0] || "version" == commands[0] || options.get("version") || options.get("v")) {
|
150
|
-
console.log("0.19.1-
|
156
|
+
console.log("0.19.1-bf4dc4a")
|
151
157
|
process.exit()
|
152
158
|
}
|
153
159
|
let configDidNotExist = !1
|
@@ -222,17 +228,20 @@ switch (commands[0]) {
|
|
222
228
|
break
|
223
229
|
}
|
224
230
|
} else scripts.push("*.*")
|
225
|
-
|
226
|
-
|
231
|
+
const optionsHasNoMinify = options.has("no-minify")
|
232
|
+
if ((optionsHasNoMinify || options.has("skip-minify")) && options.has("mangle-names")) {
|
233
|
+
logError(
|
234
|
+
`Options ${colourN("--mangle-names")} and ${colourN(optionsHasNoMinify ? "--no-minify" : "--skip-minify")} are incompatible\n`
|
235
|
+
)
|
227
236
|
logHelp()
|
228
237
|
break
|
229
238
|
}
|
230
|
-
const shouldSkipMinify = options.get("skip-minify")
|
239
|
+
const shouldSkipMinify = options.get("no-minify") || options.get("skip-minify")
|
231
240
|
let shouldMinify
|
232
241
|
if (null != shouldSkipMinify) {
|
233
242
|
if ("boolean" != typeof shouldSkipMinify) {
|
234
243
|
logError(
|
235
|
-
`The value for ${colourN("--skip-minify")} must be ${colourV("true")} or ${colourV("false")}\n`
|
244
|
+
`The value for ${colourN(optionsHasNoMinify ? "--no-minify" : "--skip-minify")} must be ${colourV("true")} or ${colourV("false")}\n`
|
236
245
|
)
|
237
246
|
logHelp()
|
238
247
|
break
|
@@ -292,17 +301,20 @@ switch (commands[0]) {
|
|
292
301
|
break
|
293
302
|
}
|
294
303
|
} else scripts.push("*.*")
|
295
|
-
|
296
|
-
|
304
|
+
const optionsHasNoMinify = options.has("no-minify")
|
305
|
+
if ((optionsHasNoMinify || options.has("skip-minify")) && options.has("mangle-names")) {
|
306
|
+
logError(
|
307
|
+
`Options ${colourN("--mangle-names")} and ${colourN(optionsHasNoMinify ? "--no-minify" : "--skip-minify")} are incompatible\n`
|
308
|
+
)
|
297
309
|
logHelp()
|
298
310
|
break
|
299
311
|
}
|
300
|
-
const shouldSkipMinify = options.get("skip-minify")
|
312
|
+
const shouldSkipMinify = options.get("no-minify") || options.get("skip-minify")
|
301
313
|
let shouldMinify
|
302
314
|
if (null != shouldSkipMinify) {
|
303
315
|
if ("boolean" != typeof shouldSkipMinify) {
|
304
316
|
logError(
|
305
|
-
`The value for ${colourN("--skip-minify")} must be ${colourV("true")} or ${colourV("false")}\n`
|
317
|
+
`The value for ${colourN(optionsHasNoMinify ? "--no-minify" : "--skip-minify")} must be ${colourV("true")} or ${colourV("false")}\n`
|
306
318
|
)
|
307
319
|
logHelp()
|
308
320
|
break
|
@@ -406,8 +418,14 @@ switch (commands[0]) {
|
|
406
418
|
switch (commands[1]) {
|
407
419
|
case "get":
|
408
420
|
{
|
409
|
-
const key = commands[2]
|
410
|
-
|
421
|
+
const key = commands[2],
|
422
|
+
config = await configPromise
|
423
|
+
if (key) {
|
424
|
+
const [value, error] = catchError(() => getDeepObjectProperty(config, key.split(".")))
|
425
|
+
error ? logError("Could not get key " + colourV(key))
|
426
|
+
: "string" == typeof value ? log(value)
|
427
|
+
: console.log(value)
|
428
|
+
} else console.log(config)
|
411
429
|
}
|
412
430
|
break
|
413
431
|
case "delete":
|
@@ -418,14 +436,16 @@ switch (commands[0]) {
|
|
418
436
|
logHelp()
|
419
437
|
break
|
420
438
|
}
|
421
|
-
const
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
439
|
+
const keys = key.split("."),
|
440
|
+
lastKey = keys.pop(),
|
441
|
+
config = await configPromise,
|
442
|
+
object = getDeepObjectProperty(config, keys)
|
443
|
+
if (isRecord(object)) {
|
444
|
+
delete object[lastKey]
|
445
|
+
await updateConfig(config)
|
446
|
+
log(`Removed ${colourV(key)} from config file:`)
|
447
|
+
console.log(config)
|
448
|
+
} else log("Could not delete " + colourV(key))
|
429
449
|
}
|
430
450
|
break
|
431
451
|
case "set":
|
@@ -437,49 +457,20 @@ switch (commands[0]) {
|
|
437
457
|
logHelp()
|
438
458
|
break
|
439
459
|
}
|
440
|
-
const keys = key.split("."),
|
441
|
-
pathName = keys
|
442
|
-
.map(name => (/^[a-z_$][\w$]*$/i.test(name) ? name : JSON.stringify(name)))
|
443
|
-
.join(".")
|
444
460
|
if (!value) {
|
445
|
-
logError(`Must provide a value for the key ${
|
461
|
+
logError(`Must provide a value for the key ${colourV(key)}\n`)
|
446
462
|
logHelp()
|
447
463
|
break
|
448
464
|
}
|
449
|
-
const
|
450
|
-
|
451
|
-
|
452
|
-
let object = config
|
453
|
-
for (const key of keys)
|
454
|
-
if ("object" == typeof object[key]) object = object[key]
|
455
|
-
else {
|
456
|
-
object[key] = {}
|
457
|
-
object = object[key]
|
458
|
-
}
|
459
|
-
object[lastKey] = value
|
460
|
-
} else config.hackmudPath = resolve(value.startsWith("~/") ? homedir() + value.slice(1) : value)
|
465
|
+
const config = await configPromise
|
466
|
+
setDeepObjectProperty(config, key.split("."), value)
|
467
|
+
log(`Set ${colourV(key)} to ${colourV(value)}:`)
|
461
468
|
console.log(config)
|
462
|
-
await (
|
463
|
-
const json = JSON.stringify(config, void 0, "\t")
|
464
|
-
configDidNotExist && log("Creating config file at " + configFilePath)
|
465
|
-
await writeFile(configFilePath, json).catch(async error => {
|
466
|
-
switch (error.code) {
|
467
|
-
case "EISDIR":
|
468
|
-
await rmdir(configFilePath)
|
469
|
-
break
|
470
|
-
case "ENOENT":
|
471
|
-
await mkdir(configDirectoryPath)
|
472
|
-
break
|
473
|
-
default:
|
474
|
-
throw error
|
475
|
-
}
|
476
|
-
await writeFile(configFilePath, json)
|
477
|
-
})
|
478
|
-
})(config)
|
469
|
+
await updateConfig(config)
|
479
470
|
}
|
480
471
|
break
|
481
472
|
default:
|
482
|
-
commands[1] && logError(`Unknown command: ${
|
473
|
+
commands[1] && logError(`Unknown command: ${colourL(commands[1])}\n`)
|
483
474
|
logHelp()
|
484
475
|
}
|
485
476
|
break
|
@@ -511,9 +502,11 @@ switch (commands[0]) {
|
|
511
502
|
"scripts" == basename(resolve(target, "..")) && "hackmud" == basename(resolve(target, "../../..")) ?
|
512
503
|
basename(resolve(target, "../.."))
|
513
504
|
: "UNKNOWN",
|
514
|
-
|
515
|
-
if (options.has("skip-minify") && options.has("mangle-names")) {
|
516
|
-
logError(
|
505
|
+
optionsHasNoMinify = options.has("no-minify")
|
506
|
+
if ((optionsHasNoMinify || options.has("skip-minify")) && options.has("mangle-names")) {
|
507
|
+
logError(
|
508
|
+
`Options ${colourN("--mangle-names")} and ${colourN(optionsHasNoMinify ? "--no-minify" : "--skip-minify")} are incompatible\n`
|
509
|
+
)
|
517
510
|
logHelp()
|
518
511
|
break
|
519
512
|
}
|
@@ -548,7 +541,7 @@ switch (commands[0]) {
|
|
548
541
|
async source => {
|
549
542
|
const timeStart = performance.now(),
|
550
543
|
{ script, warnings } = await processScript(source, {
|
551
|
-
minify,
|
544
|
+
minify: !(options.get("no-minify") || options.get("skip-minify")),
|
552
545
|
scriptUser,
|
553
546
|
scriptName,
|
554
547
|
filePath: target,
|
@@ -584,7 +577,7 @@ switch (commands[0]) {
|
|
584
577
|
}
|
585
578
|
break
|
586
579
|
default:
|
587
|
-
commands[0] && logError(`Unknown command: ${
|
580
|
+
commands[0] && logError(`Unknown command: ${colourL(commands[0])}\n`)
|
588
581
|
logHelp()
|
589
582
|
}
|
590
583
|
autoExit && process.exit()
|
@@ -1,31 +1,31 @@
|
|
1
|
-
import {
|
1
|
+
import { readDirectoryWithStats } from "@samual/lib/readDirectoryWithStats"
|
2
2
|
import { basename, resolve } from "path"
|
3
3
|
const generateTypeDeclaration = async (sourceDirectory, hackmudPath) => {
|
4
4
|
const users = new Set()
|
5
5
|
if (hackmudPath)
|
6
|
-
for (const
|
7
|
-
|
6
|
+
for (const { stats, name } of await readDirectoryWithStats(hackmudPath))
|
7
|
+
stats.isFile() && name.endsWith(".key") && users.add(basename(name, ".key"))
|
8
8
|
const wildScripts = [],
|
9
9
|
wildAnyScripts = [],
|
10
10
|
allScripts = {},
|
11
11
|
allAnyScripts = {}
|
12
12
|
await Promise.all(
|
13
|
-
(await
|
14
|
-
if (
|
15
|
-
|
16
|
-
|
17
|
-
:
|
18
|
-
else if (
|
13
|
+
(await readDirectoryWithStats(sourceDirectory)).map(async ({ stats, name }) => {
|
14
|
+
if (stats.isFile())
|
15
|
+
name.endsWith(".ts") ?
|
16
|
+
name.endsWith(".d.ts") || wildScripts.push(basename(name, ".ts"))
|
17
|
+
: name.endsWith(".js") && wildAnyScripts.push(basename(name, ".js"))
|
18
|
+
else if (stats.isDirectory()) {
|
19
19
|
const scripts = [],
|
20
20
|
anyScripts = []
|
21
|
-
allScripts[
|
22
|
-
allAnyScripts[
|
23
|
-
users.add(
|
24
|
-
for (const
|
25
|
-
|
26
|
-
(
|
27
|
-
|
28
|
-
:
|
21
|
+
allScripts[name] = scripts
|
22
|
+
allAnyScripts[name] = anyScripts
|
23
|
+
users.add(name)
|
24
|
+
for (const child of await readDirectoryWithStats(resolve(sourceDirectory, name)))
|
25
|
+
child.stats.isFile() &&
|
26
|
+
(child.name.endsWith(".ts") ?
|
27
|
+
name.endsWith(".d.ts") || scripts.push(basename(child.name, ".ts"))
|
28
|
+
: child.name.endsWith(".js") && anyScripts.push(basename(child.name, ".js")))
|
29
29
|
}
|
30
30
|
})
|
31
31
|
)
|
package/index.js
CHANGED
@@ -5,7 +5,7 @@ export { pull } from "./pull.js"
|
|
5
5
|
export { push } from "./push.js"
|
6
6
|
export { syncMacros } from "./syncMacros.js"
|
7
7
|
export { watch } from "./watch.js"
|
8
|
-
import "
|
8
|
+
import "@samual/lib/readDirectoryWithStats"
|
9
9
|
import "path"
|
10
10
|
import "@babel/generator"
|
11
11
|
import "@babel/parser"
|
@@ -47,4 +47,5 @@ import "@samual/lib/clearObject"
|
|
47
47
|
import "@samual/lib/copyFilePersistent"
|
48
48
|
import "@samual/lib/Cache"
|
49
49
|
import "@samual/lib/writeFilePersistent"
|
50
|
+
import "fs/promises"
|
50
51
|
import "chokidar"
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "hackmud-script-manager",
|
3
|
-
"version": "0.19.1-
|
3
|
+
"version": "0.19.1-bf4dc4a",
|
4
4
|
"description": "Script manager for game hackmud, with minification, TypeScript support, and player script type definition generation.",
|
5
5
|
"keywords": [
|
6
6
|
"api",
|
@@ -59,7 +59,7 @@
|
|
59
59
|
"@rollup/plugin-commonjs": "^25.0.7",
|
60
60
|
"@rollup/plugin-json": "^6.1.0",
|
61
61
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
62
|
-
"@samual/lib": "
|
62
|
+
"@samual/lib": "0.10.2-e64c5bc",
|
63
63
|
"acorn": "^8.11.3",
|
64
64
|
"chalk": "^5.3.0",
|
65
65
|
"chokidar": "^3.6.0",
|
@@ -71,7 +71,7 @@
|
|
71
71
|
},
|
72
72
|
"engines": {
|
73
73
|
"node": "^18 || >=20",
|
74
|
-
"pnpm": "^
|
74
|
+
"pnpm": "^9.0.1"
|
75
75
|
},
|
76
76
|
"type": "module",
|
77
77
|
"exports": {
|
package/processScript/index.js
CHANGED
@@ -29,7 +29,7 @@ import { supportedExtensions } from "../constants.js"
|
|
29
29
|
import { minify } from "./minify.js"
|
30
30
|
import { postprocess } from "./postprocess.js"
|
31
31
|
import { preprocess } from "./preprocess.js"
|
32
|
-
import { includesIllegalString, replaceUnsafeStrings } from "./shared.js"
|
32
|
+
import { getReferencePathsToGlobal, includesIllegalString, replaceUnsafeStrings } from "./shared.js"
|
33
33
|
import { transform } from "./transform.js"
|
34
34
|
import "@samual/lib/countHackmudCharacters"
|
35
35
|
import "@samual/lib/spliceString"
|
@@ -206,7 +206,24 @@ const { format } = prettier,
|
|
206
206
|
plugins: [
|
207
207
|
{
|
208
208
|
name: "hackmud-script-manager",
|
209
|
-
transform: async
|
209
|
+
transform: async (code, id) => {
|
210
|
+
if (!id.includes("/node_modules/")) return (await preprocess(code, { uniqueID })).code
|
211
|
+
let program
|
212
|
+
traverse(parse(code, { sourceType: "module" }), {
|
213
|
+
Program(path) {
|
214
|
+
program = path
|
215
|
+
path.skip()
|
216
|
+
}
|
217
|
+
})
|
218
|
+
for (const referencePath of getReferencePathsToGlobal("JSON", program))
|
219
|
+
"MemberExpression" == referencePath.parentPath.node.type &&
|
220
|
+
"Identifier" == referencePath.parentPath.node.property.type &&
|
221
|
+
("parse" == referencePath.parentPath.node.property.name ?
|
222
|
+
(referencePath.parentPath.node.property.name = "oparse")
|
223
|
+
: "stringify" == referencePath.parentPath.node.property.name &&
|
224
|
+
(referencePath.parentPath.node.property.name = "ostringify"))
|
225
|
+
return generate(program.node).code
|
226
|
+
}
|
210
227
|
},
|
211
228
|
babel({ babelHelpers: "bundled", plugins, configFile: !1, extensions: supportedExtensions }),
|
212
229
|
rollupPluginCommonJS(),
|
package/processScript/minify.js
CHANGED
@@ -357,7 +357,7 @@ const { default: generate } = babelGenerator,
|
|
357
357
|
unsafe_undefined: !0,
|
358
358
|
sequences: !1
|
359
359
|
},
|
360
|
-
format: { semicolons: !1 },
|
360
|
+
format: { semicolons: !1, wrap_func_args: !1 },
|
361
361
|
keep_classnames: !mangleNames,
|
362
362
|
keep_fnames: !mangleNames
|
363
363
|
})
|
@@ -422,7 +422,7 @@ const { default: generate } = babelGenerator,
|
|
422
422
|
if ("ArrayExpression" == element.type) {
|
423
423
|
const childArray = []
|
424
424
|
if (!parseArrayExpression(element, childArray)) return !1
|
425
|
-
|
425
|
+
o.push(childArray)
|
426
426
|
} else if ("ObjectExpression" == element.type) {
|
427
427
|
const childObject = {}
|
428
428
|
if (!parseObjectExpression(element, childObject)) return !1
|
@@ -95,7 +95,7 @@ const { default: traverse } = babelTraverse,
|
|
95
95
|
file.program.body.unshift(
|
96
96
|
t.importDeclaration(
|
97
97
|
[t.importDefaultSpecifier(t.identifier("Proxy"))],
|
98
|
-
t.stringLiteral(
|
98
|
+
t.stringLiteral(resolve("proxy-polyfill/src/proxy.js", import.meta.url).slice(7))
|
99
99
|
)
|
100
100
|
)
|
101
101
|
return 1 == program.node.body.length && "FunctionDeclaration" == program.node.body[0].type ?
|