hackmud-script-manager 0.19.1-27bbd7d → 0.19.1-29fcf72
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/README.md +0 -2
- package/bin/hsm.js +145 -299
- package/generateTypeDeclaration.js +18 -18
- package/index.js +2 -1
- package/package.json +7 -9
- package/processScript/index.js +257 -240
- package/processScript/minify.js +380 -394
- package/processScript/preprocess.js +93 -93
- package/processScript/shared.js +11 -11
- package/processScript/transform.js +569 -550
- package/pull.js +1 -1
- package/push.js +45 -39
- package/{bin → src/bin}/hsm.d.ts +0 -0
- package/src/generateTypeDeclaration.d.ts +2 -0
- package/src/processScript/index.d.ts +31 -0
- package/src/processScript/minify.d.ts +18 -0
- package/src/processScript/preprocess.d.ts +9 -0
- package/{processScript → src/processScript}/shared.d.ts +1 -1
- package/src/processScript/transform.d.ts +18 -0
- package/src/pull.d.ts +6 -0
- package/src/push.d.ts +29 -0
- package/{syncMacros.d.ts → src/syncMacros.d.ts} +1 -1
- package/src/watch.d.ts +15 -0
- package/syncMacros.js +5 -4
- package/watch.js +21 -22
- package/generateTypeDeclaration.d.ts +0 -2
- package/processScript/index.d.ts +0 -40
- package/processScript/minify.d.ts +0 -24
- package/processScript/preprocess.d.ts +0 -12
- package/processScript/transform.d.ts +0 -24
- package/pull.d.ts +0 -9
- package/push.d.ts +0 -37
- package/tsconfig.tsbuildinfo +0 -1
- package/watch.d.ts +0 -20
- /package/{constants.d.ts → src/constants.d.ts} +0 -0
- /package/{index.d.ts → src/index.d.ts} +0 -0
- /package/{processScript → src/processScript}/postprocess.d.ts +0 -0
package/pull.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { copyFilePersistent } from "@samual/lib/copyFilePersistent"
|
2
2
|
import { resolve } from "path"
|
3
|
-
|
3
|
+
async function pull(sourceFolderPath, hackmudPath, script) {
|
4
4
|
const [user, name] = script.split(".")
|
5
5
|
if (!user || !name) throw Error('`script` argument must be in "user.name" format')
|
6
6
|
await copyFilePersistent(
|
package/push.js
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
import { Cache } from "@samual/lib/Cache"
|
2
2
|
import { countHackmudCharacters } from "@samual/lib/countHackmudCharacters"
|
3
|
+
import { readDirectoryWithStats } from "@samual/lib/readDirectoryWithStats"
|
3
4
|
import { writeFilePersistent } from "@samual/lib/writeFilePersistent"
|
4
|
-
import {
|
5
|
-
import { resolve, extname
|
5
|
+
import { readFile } from "fs/promises"
|
6
|
+
import { basename, resolve, extname } from "path"
|
6
7
|
import { supportedExtensions } from "./constants.js"
|
7
8
|
import { processScript } from "./processScript/index.js"
|
8
9
|
import "@babel/generator"
|
@@ -41,11 +42,11 @@ import "./processScript/preprocess.js"
|
|
41
42
|
import "import-meta-resolve"
|
42
43
|
import "./processScript/transform.js"
|
43
44
|
import "@samual/lib/clearObject"
|
44
|
-
|
45
|
+
async function push(
|
45
46
|
sourceDirectory,
|
46
47
|
hackmudDirectory,
|
47
48
|
{ scripts = ["*.*"], onPush = () => {}, minify = !0, mangleNames = !1, forceQuineCheats } = {}
|
48
|
-
)
|
49
|
+
) {
|
49
50
|
const scriptNamesByUser = new Cache(_user => new Set()),
|
50
51
|
wildScriptUsers = new Set(),
|
51
52
|
wildUserScripts = new Set()
|
@@ -64,18 +65,20 @@ const push = async (
|
|
64
65
|
scriptNamesAlreadyPushedByUser = new Cache(_user => new Set())
|
65
66
|
let sourceDirectoryDirents
|
66
67
|
if (wildUserScripts.size || pushEverything) {
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
68
|
+
let hackmudDirectoryEntries
|
69
|
+
;[hackmudDirectoryEntries, sourceDirectoryDirents] = await Promise.all([
|
70
|
+
readDirectoryWithStats(hackmudDirectory),
|
71
|
+
readDirectoryWithStats(sourceDirectory)
|
72
|
+
])
|
73
|
+
const allUsers = new Set([
|
74
|
+
...sourceDirectoryDirents.filter(({ stats }) => stats.isDirectory()).map(({ path }) => basename(path)),
|
75
|
+
...hackmudDirectoryEntries.filter(({ stats }) => stats.isDirectory()).map(({ name }) => name),
|
76
|
+
...hackmudDirectoryEntries
|
77
|
+
.filter(({ name, stats }) => stats.isFile() && name.endsWith(".key"))
|
78
|
+
.map(({ name }) => name.slice(0, -4)),
|
79
|
+
...scriptNamesByUser.keys(),
|
80
|
+
...wildScriptUsers
|
81
|
+
])
|
79
82
|
if (pushEverything) for (const user of allUsers) wildScriptUsers.add(user)
|
80
83
|
else
|
81
84
|
for (const user of allUsers) {
|
@@ -85,28 +88,27 @@ const push = async (
|
|
85
88
|
}
|
86
89
|
await Promise.all(
|
87
90
|
[...wildScriptUsers].map(async user => {
|
88
|
-
await
|
89
|
-
async
|
91
|
+
await readDirectoryWithStats(resolve(sourceDirectory, user)).then(
|
92
|
+
async entries => {
|
90
93
|
await Promise.all(
|
91
|
-
|
92
|
-
if (
|
93
|
-
const extension = extname(
|
94
|
-
if (
|
95
|
-
const scriptName = basename(
|
96
|
-
filePath = resolve(sourceDirectory, user, dirent.name),
|
94
|
+
entries.map(async ({ stats, name, path }) => {
|
95
|
+
if (name.endsWith(".d.ts")) return
|
96
|
+
const extension = extname(name)
|
97
|
+
if (stats.isFile() && supportedExtensions.includes(extension)) {
|
98
|
+
const scriptName = basename(name, extension),
|
97
99
|
{ script: minifiedCode } = await processScript(
|
98
|
-
await readFile(
|
100
|
+
await readFile(path, { encoding: "utf-8" }),
|
99
101
|
{
|
100
102
|
minify,
|
101
103
|
scriptUser: user,
|
102
104
|
scriptName,
|
103
|
-
filePath,
|
105
|
+
filePath: path,
|
104
106
|
mangleNames,
|
105
107
|
forceQuineCheats
|
106
108
|
}
|
107
109
|
),
|
108
110
|
info = {
|
109
|
-
file: `${user}/${
|
111
|
+
file: `${user}/${name}`,
|
110
112
|
users: [user],
|
111
113
|
minLength: countHackmudCharacters(minifiedCode),
|
112
114
|
error: void 0
|
@@ -170,12 +172,12 @@ const push = async (
|
|
170
172
|
)
|
171
173
|
await (wildScriptUsers.size ?
|
172
174
|
Promise.all(
|
173
|
-
(sourceDirectoryDirents || (await
|
174
|
-
async
|
175
|
-
if (
|
176
|
-
const extension = extname(
|
177
|
-
if (!
|
178
|
-
const scriptName = basename(
|
175
|
+
(sourceDirectoryDirents || (await readDirectoryWithStats(sourceDirectory))).map(
|
176
|
+
async ({ path, stats, name }) => {
|
177
|
+
if (name.endsWith(".d.ts")) return
|
178
|
+
const extension = extname(name)
|
179
|
+
if (!stats.isFile() || !supportedExtensions.includes(extension)) return
|
180
|
+
const scriptName = basename(name, extension),
|
179
181
|
usersToPushTo = [...wildScriptUsers, ...usersByGlobalScriptsToPush.get(scriptName)].filter(
|
180
182
|
user => !scriptNamesAlreadyPushedByUser.get(user).has(scriptName)
|
181
183
|
)
|
@@ -183,13 +185,17 @@ const push = async (
|
|
183
185
|
const uniqueID = Math.floor(Math.random() * 2 ** 52)
|
184
186
|
.toString(36)
|
185
187
|
.padStart(11, "0"),
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
188
|
+
{ script: minifiedCode } = await processScript(await readFile(path, { encoding: "utf-8" }), {
|
189
|
+
minify,
|
190
|
+
scriptUser: !0,
|
191
|
+
scriptName,
|
192
|
+
uniqueID,
|
193
|
+
filePath: path,
|
194
|
+
mangleNames,
|
195
|
+
forceQuineCheats
|
196
|
+
}),
|
191
197
|
info = {
|
192
|
-
file:
|
198
|
+
file: name,
|
193
199
|
users: usersToPushTo,
|
194
200
|
minLength: countHackmudCharacters(minifiedCode),
|
195
201
|
error: void 0
|
package/{bin → src/bin}/hsm.d.ts
RENAMED
File without changes
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import type { LaxPartial } from "@samual/lib";
|
2
|
+
export { minify } from "./minify";
|
3
|
+
export { postprocess } from "./postprocess";
|
4
|
+
export { preprocess } from "./preprocess";
|
5
|
+
export { transform } from "./transform";
|
6
|
+
export type ProcessOptions = {
|
7
|
+
/** whether to minify the given code */ minify: boolean;
|
8
|
+
/** 11 a-z 0-9 characters */ uniqueID: string;
|
9
|
+
/** the user going to be hosting this script (or set to `true` if not yet known) */ scriptUser: string | true;
|
10
|
+
/** the name of this script (or set to `true` if not yet known) */ scriptName: string | true;
|
11
|
+
filePath: string;
|
12
|
+
/** whether to mangle function and class names (defaults to `false`) */ mangleNames: boolean;
|
13
|
+
/** when set to `true` forces use of quine cheats
|
14
|
+
*
|
15
|
+
* when set to `false` forces quine cheats not to be used
|
16
|
+
*
|
17
|
+
* when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
|
18
|
+
*/
|
19
|
+
forceQuineCheats: boolean;
|
20
|
+
};
|
21
|
+
/** Minifies a given script
|
22
|
+
* @param code JavaScript or TypeScript code
|
23
|
+
* @param options {@link ProcessOptions details} */
|
24
|
+
export declare function processScript(code: string, { minify: shouldMinify, uniqueID, scriptUser, scriptName, filePath, mangleNames, forceQuineCheats }?: LaxPartial<ProcessOptions>): Promise<{
|
25
|
+
script: string;
|
26
|
+
warnings: {
|
27
|
+
message: string;
|
28
|
+
line: number;
|
29
|
+
}[];
|
30
|
+
}>;
|
31
|
+
export default processScript;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import type { File } from "@babel/types";
|
2
|
+
import type { LaxPartial } from "@samual/lib";
|
3
|
+
type MinifyOptions = {
|
4
|
+
/** 11 a-z 0-9 characters */ uniqueID: string;
|
5
|
+
/** whether to mangle function and class names (defaults to `false`) */ mangleNames: boolean;
|
6
|
+
/** when set to `true` forces use of quine cheats
|
7
|
+
*
|
8
|
+
* when set to `false` forces quine cheats not to be used
|
9
|
+
*
|
10
|
+
* when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
|
11
|
+
*/
|
12
|
+
forceQuineCheats: boolean;
|
13
|
+
/** the comment inserted after the function signature */ autocomplete: string;
|
14
|
+
};
|
15
|
+
/** @param file babel ast node representing a file containing transformed code
|
16
|
+
* @param options {@link MinifyOptions details} */
|
17
|
+
export declare function minify(file: File, { uniqueID, mangleNames, forceQuineCheats, autocomplete }?: LaxPartial<MinifyOptions>): Promise<string>;
|
18
|
+
export default minify;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
export type PreprocessOptions = {
|
2
|
+
/** 11 a-z 0-9 characters */ uniqueID: string;
|
3
|
+
};
|
4
|
+
/** @param code source code for preprocessing
|
5
|
+
* @param options {@link PreprocessOptions details} */
|
6
|
+
export declare function preprocess(code: string, { uniqueID }?: Partial<PreprocessOptions>): Promise<{
|
7
|
+
code: string;
|
8
|
+
}>;
|
9
|
+
export default preprocess;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { NodePath } from "@babel/traverse";
|
2
2
|
import type { Identifier, Program } from "@babel/types";
|
3
|
-
export declare
|
3
|
+
export declare function getReferencePathsToGlobal(name: string, program: NodePath<Program>): NodePath<Identifier>[];
|
4
4
|
export declare const includesIllegalString: (toCheck: string) => boolean;
|
5
5
|
export declare const replaceUnsafeStrings: (uniqueID: string, toReplace: string) => string;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import type { File } from "@babel/types";
|
2
|
+
export type TransformOptions = {
|
3
|
+
/** 11 a-z 0-9 characters */ uniqueID: string;
|
4
|
+
/** the user going to be hosting this script (or set to `true` if not yet known) */ scriptUser: string | true;
|
5
|
+
/** the name of this script (or set to `true` if not yet known) */ scriptName: string | true;
|
6
|
+
seclevel: number;
|
7
|
+
};
|
8
|
+
/** transform a given babel `File` to be hackmud compatible
|
9
|
+
*
|
10
|
+
* (returned File will need `postprocess()`ing)
|
11
|
+
* @param file babel ast node representing a file containing preprocessed code
|
12
|
+
* @param sourceCode the original untouched source code
|
13
|
+
* @param options {@link TransformOptions details} */
|
14
|
+
export declare function transform(file: File, sourceCode: string, { uniqueID, scriptUser, scriptName, seclevel }?: Partial<TransformOptions>): {
|
15
|
+
file: File;
|
16
|
+
seclevel: number;
|
17
|
+
};
|
18
|
+
export default transform;
|
package/src/pull.d.ts
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
/** Copies script from hackmud to local source folder.
|
2
|
+
* @param sourceFolderPath path to folder containing source files
|
3
|
+
* @param hackmudPath path to hackmud directory
|
4
|
+
* @param script to pull in `user.name` format */
|
5
|
+
export declare function pull(sourceFolderPath: string, hackmudPath: string, script: string): Promise<void>;
|
6
|
+
export default pull;
|
package/src/push.d.ts
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
import type { LaxPartial } from "@samual/lib";
|
2
|
+
import type { Info } from ".";
|
3
|
+
export type PushOptions = {
|
4
|
+
/** whether to do the minify step (defaults to `true`) */ minify: boolean;
|
5
|
+
/** whether to mangle function and class names (defaults to `false`) */ mangleNames: boolean;
|
6
|
+
/** array of scripts in the format `foo.bar`
|
7
|
+
*
|
8
|
+
* also accepts wild card (`*`) e.g. `*.bar` or `foo.*`
|
9
|
+
*
|
10
|
+
* pushes everything by default (`*.*`) */
|
11
|
+
scripts: string[];
|
12
|
+
/** callback called on script push */ onPush: (info: Info) => void;
|
13
|
+
/** when set to `true` forces use of quine cheats
|
14
|
+
*
|
15
|
+
* when set to `false` forces quine cheats not to be used
|
16
|
+
*
|
17
|
+
* when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
|
18
|
+
*/
|
19
|
+
forceQuineCheats: boolean;
|
20
|
+
};
|
21
|
+
/** Push scripts from a source directory to the hackmud directory.
|
22
|
+
*
|
23
|
+
* Pushes files directly in the source folder to all users
|
24
|
+
* @param sourceDirectory directory containing source code
|
25
|
+
* @param hackmudDirectory directory created by hackmud containing user data including scripts
|
26
|
+
* @param options {@link PushOptions details}
|
27
|
+
* @returns array of info on pushed scripts */
|
28
|
+
export declare function push(sourceDirectory: string, hackmudDirectory: string, { scripts, onPush, minify, mangleNames, forceQuineCheats }?: LaxPartial<PushOptions>): Promise<Info[]>;
|
29
|
+
export default push;
|
package/src/watch.d.ts
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
import type { LaxPartial } from "@samual/lib";
|
2
|
+
import type { PushOptions } from "./push";
|
3
|
+
export type WatchOptions = PushOptions & {
|
4
|
+
/** if provided, will write typescript type declarations for all the scripts on every change detected
|
5
|
+
*
|
6
|
+
* writing the type declarations enables interscript type checking and autocompletetes for the args */
|
7
|
+
typeDeclarationPath: string;
|
8
|
+
onReady: () => void;
|
9
|
+
};
|
10
|
+
/** Watches target file or folder for updates and builds and pushes updated file.
|
11
|
+
* @param sourceDirectory path to folder containing source files
|
12
|
+
* @param hackmudDirectory path to hackmud directory
|
13
|
+
* @param options {@link WatchOptions details} and {@link PushOptions more details} */
|
14
|
+
export declare function watch(sourceDirectory: string, hackmudDirectory: string, { scripts, onPush, minify, mangleNames, typeDeclarationPath: typeDeclarationPath_, onReady, forceQuineCheats }?: LaxPartial<WatchOptions>): Promise<void>;
|
15
|
+
export default watch;
|
package/syncMacros.js
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
import {
|
1
|
+
import { readDirectoryWithStats } from "@samual/lib/readDirectoryWithStats"
|
2
|
+
import { readFile, stat, writeFile } from "fs/promises"
|
2
3
|
import { extname, basename, resolve } from "path"
|
3
|
-
|
4
|
-
const files = await
|
4
|
+
async function syncMacros(hackmudPath) {
|
5
|
+
const files = await readDirectoryWithStats(hackmudPath),
|
5
6
|
macros = new Map(),
|
6
7
|
users = []
|
7
8
|
await Promise.all(
|
8
9
|
files.map(async file => {
|
9
|
-
if (file.isFile())
|
10
|
+
if (file.stats.isFile())
|
10
11
|
switch (extname(file.name)) {
|
11
12
|
case ".macros":
|
12
13
|
{
|
package/watch.js
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
import { Cache } from "@samual/lib/Cache"
|
2
2
|
import { assert } from "@samual/lib/assert"
|
3
3
|
import { countHackmudCharacters } from "@samual/lib/countHackmudCharacters"
|
4
|
+
import { readDirectoryWithStats } from "@samual/lib/readDirectoryWithStats"
|
4
5
|
import { writeFilePersistent } from "@samual/lib/writeFilePersistent"
|
5
6
|
import { watch as watch$1 } from "chokidar"
|
6
|
-
import {
|
7
|
+
import { readFile, writeFile } from "fs/promises"
|
7
8
|
import { extname, basename, resolve } from "path"
|
8
9
|
import { supportedExtensions } from "./constants.js"
|
9
10
|
import { generateTypeDeclaration } from "./generateTypeDeclaration.js"
|
@@ -43,7 +44,7 @@ import "./processScript/preprocess.js"
|
|
43
44
|
import "import-meta-resolve"
|
44
45
|
import "./processScript/transform.js"
|
45
46
|
import "@samual/lib/clearObject"
|
46
|
-
|
47
|
+
async function watch(
|
47
48
|
sourceDirectory,
|
48
49
|
hackmudDirectory,
|
49
50
|
{
|
@@ -55,7 +56,7 @@ const watch = async (
|
|
55
56
|
onReady,
|
56
57
|
forceQuineCheats
|
57
58
|
} = {}
|
58
|
-
)
|
59
|
+
) {
|
59
60
|
if (!scripts.length) throw Error("scripts option was an empty array")
|
60
61
|
const scriptNamesToUsers = new Cache(_scriptName => new Set()),
|
61
62
|
wildScriptUsers = new Set(),
|
@@ -91,26 +92,24 @@ const watch = async (
|
|
91
92
|
return
|
92
93
|
const scriptNamesToUsersToSkip = new Cache(_scriptName => [])
|
93
94
|
await Promise.all(
|
94
|
-
(await
|
95
|
-
if (
|
96
|
-
for (const
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
scriptNamesToUsersToSkip.get(basename(file.name, fileExtension)).push(dirent.name)
|
103
|
-
}
|
95
|
+
(await readDirectoryWithStats(sourceDirectory)).map(async ({ stats, name, path }) => {
|
96
|
+
if (stats.isDirectory())
|
97
|
+
for (const child of await readDirectoryWithStats(path))
|
98
|
+
if (child.stats.isFile()) {
|
99
|
+
const fileExtension = extname(child.name)
|
100
|
+
supportedExtensions.includes(fileExtension) &&
|
101
|
+
scriptNamesToUsersToSkip.get(basename(child.name, fileExtension)).push(name)
|
102
|
+
}
|
104
103
|
})
|
105
104
|
)
|
106
105
|
const usersToPushToSet = new Set()
|
107
106
|
if (pushEverything || wildUserScripts.has(scriptName)) {
|
108
|
-
for (const
|
109
|
-
|
110
|
-
for (const
|
111
|
-
|
112
|
-
usersToPushToSet.add(
|
113
|
-
:
|
107
|
+
for (const { stats, name } of await readDirectoryWithStats(sourceDirectory))
|
108
|
+
stats.isDirectory() && usersToPushToSet.add(name)
|
109
|
+
for (const { stats, name } of await readDirectoryWithStats(hackmudDirectory))
|
110
|
+
stats.isDirectory() ?
|
111
|
+
usersToPushToSet.add(name)
|
112
|
+
: stats.isFile() && name.endsWith(".key") && usersToPushToSet.add(name.slice(0, -4))
|
114
113
|
for (const users of scriptNamesToUsers.values()) for (const user of users) usersToPushToSet.add(user)
|
115
114
|
}
|
116
115
|
for (const user of wildScriptUsers) usersToPushToSet.add(user)
|
@@ -136,7 +135,7 @@ const watch = async (
|
|
136
135
|
forceQuineCheats
|
137
136
|
}))
|
138
137
|
} catch (error) {
|
139
|
-
assert(error instanceof Error)
|
138
|
+
assert(error instanceof Error, "src/watch.ts:141:36")
|
140
139
|
onPush?.({ file: path, users: [], minLength: 0, error })
|
141
140
|
return
|
142
141
|
}
|
@@ -181,7 +180,7 @@ const watch = async (
|
|
181
180
|
forceQuineCheats
|
182
181
|
}))
|
183
182
|
} catch (error) {
|
184
|
-
assert(error instanceof Error)
|
183
|
+
assert(error instanceof Error, "src/watch.ts:177:35")
|
185
184
|
onPush?.({ file: path, users: [], minLength: 0, error })
|
186
185
|
return
|
187
186
|
}
|
@@ -196,7 +195,7 @@ const watch = async (
|
|
196
195
|
try {
|
197
196
|
await writeFile(typeDeclarationPath, typeDeclaration)
|
198
197
|
} catch (error) {
|
199
|
-
assert(error instanceof Error)
|
198
|
+
assert(error instanceof Error, "src/watch.ts:210:35")
|
200
199
|
if ("EISDIR" != error.code) throw error
|
201
200
|
typeDeclarationPath = resolve(typeDeclarationPath, "player.d.ts")
|
202
201
|
await writeFile(typeDeclarationPath, typeDeclaration)
|
package/processScript/index.d.ts
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
import type { LaxPartial } from "@samual/lib";
|
2
|
-
export { minify } from "./minify";
|
3
|
-
export { postprocess } from "./postprocess";
|
4
|
-
export { preprocess } from "./preprocess";
|
5
|
-
export { transform } from "./transform";
|
6
|
-
export type ProcessOptions = {
|
7
|
-
/** whether to minify the given code */
|
8
|
-
minify: boolean;
|
9
|
-
/** 11 a-z 0-9 characters */
|
10
|
-
uniqueID: string;
|
11
|
-
/** the user going to be hosting this script (or set to `true` if not yet known) */
|
12
|
-
scriptUser: string | true;
|
13
|
-
/** the name of this script (or set to `true` if not yet known) */
|
14
|
-
scriptName: string | true;
|
15
|
-
filePath: string;
|
16
|
-
/** whether to mangle function and class names (defaults to `false`) */
|
17
|
-
mangleNames: boolean;
|
18
|
-
/**
|
19
|
-
* when set to `true` forces use of quine cheats
|
20
|
-
*
|
21
|
-
* when set to `false` forces quine cheats not to be used
|
22
|
-
*
|
23
|
-
* when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
|
24
|
-
*/
|
25
|
-
forceQuineCheats: boolean;
|
26
|
-
};
|
27
|
-
/**
|
28
|
-
* Minifies a given script
|
29
|
-
*
|
30
|
-
* @param code JavaScript or TypeScript code
|
31
|
-
* @param options {@link ProcessOptions details}
|
32
|
-
*/
|
33
|
-
export declare const processScript: (code: string, { minify: shouldMinify, uniqueID, scriptUser, scriptName, filePath, mangleNames, forceQuineCheats }?: LaxPartial<ProcessOptions>) => Promise<{
|
34
|
-
script: string;
|
35
|
-
warnings: {
|
36
|
-
message: string;
|
37
|
-
line: number;
|
38
|
-
}[];
|
39
|
-
}>;
|
40
|
-
export default processScript;
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import type { File } from "@babel/types";
|
2
|
-
import type { LaxPartial } from "@samual/lib";
|
3
|
-
type MinifyOptions = {
|
4
|
-
/** 11 a-z 0-9 characters */
|
5
|
-
uniqueID: string;
|
6
|
-
/** whether to mangle function and class names (defaults to `false`) */
|
7
|
-
mangleNames: boolean;
|
8
|
-
/**
|
9
|
-
* when set to `true` forces use of quine cheats
|
10
|
-
*
|
11
|
-
* when set to `false` forces quine cheats not to be used
|
12
|
-
*
|
13
|
-
* when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
|
14
|
-
*/
|
15
|
-
forceQuineCheats: boolean;
|
16
|
-
/** the comment inserted after the function signature */
|
17
|
-
autocomplete: string;
|
18
|
-
};
|
19
|
-
/**
|
20
|
-
* @param file babel ast node representing a file containing transformed code
|
21
|
-
* @param options {@link MinifyOptions details}
|
22
|
-
*/
|
23
|
-
export declare const minify: (file: File, { uniqueID, mangleNames, forceQuineCheats, autocomplete }?: LaxPartial<MinifyOptions>) => Promise<string>;
|
24
|
-
export default minify;
|
@@ -1,12 +0,0 @@
|
|
1
|
-
export type PreprocessOptions = {
|
2
|
-
/** 11 a-z 0-9 characters */
|
3
|
-
uniqueID: string;
|
4
|
-
};
|
5
|
-
/**
|
6
|
-
* @param code source code for preprocessing
|
7
|
-
* @param options {@link PreprocessOptions details}
|
8
|
-
*/
|
9
|
-
export declare const preprocess: (code: string, { uniqueID }?: Partial<PreprocessOptions>) => Promise<{
|
10
|
-
code: string;
|
11
|
-
}>;
|
12
|
-
export default preprocess;
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import type { File } from "@babel/types";
|
2
|
-
export type TransformOptions = {
|
3
|
-
/** 11 a-z 0-9 characters */
|
4
|
-
uniqueID: string;
|
5
|
-
/** the user going to be hosting this script (or set to `true` if not yet known) */
|
6
|
-
scriptUser: string | true;
|
7
|
-
/** the name of this script (or set to `true` if not yet known) */
|
8
|
-
scriptName: string | true;
|
9
|
-
seclevel: number;
|
10
|
-
};
|
11
|
-
/**
|
12
|
-
* transform a given babel `File` to be hackmud compatible
|
13
|
-
*
|
14
|
-
* (returned File will need `postprocess()`ing)
|
15
|
-
*
|
16
|
-
* @param file babel ast node representing a file containing preprocessed code
|
17
|
-
* @param sourceCode the original untouched source code
|
18
|
-
* @param options {@link TransformOptions details}
|
19
|
-
*/
|
20
|
-
export declare const transform: (file: File, sourceCode: string, { uniqueID, scriptUser, scriptName, seclevel }?: Partial<TransformOptions>) => {
|
21
|
-
file: File;
|
22
|
-
seclevel: number;
|
23
|
-
};
|
24
|
-
export default transform;
|
package/pull.d.ts
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copies script from hackmud to local source folder.
|
3
|
-
*
|
4
|
-
* @param sourceFolderPath path to folder containing source files
|
5
|
-
* @param hackmudPath path to hackmud directory
|
6
|
-
* @param script to pull in `user.name` format
|
7
|
-
*/
|
8
|
-
export declare const pull: (sourceFolderPath: string, hackmudPath: string, script: string) => Promise<void>;
|
9
|
-
export default pull;
|
package/push.d.ts
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
import type { LaxPartial } from "@samual/lib";
|
2
|
-
import type { Info } from ".";
|
3
|
-
export type PushOptions = {
|
4
|
-
/** whether to do the minify step (defaults to `true`) */
|
5
|
-
minify: boolean;
|
6
|
-
/** whether to mangle function and class names (defaults to `false`) */
|
7
|
-
mangleNames: boolean;
|
8
|
-
/**
|
9
|
-
* array of scripts in the format `foo.bar`
|
10
|
-
*
|
11
|
-
* also accepts wild card (`*`) e.g. `*.bar` or `foo.*`
|
12
|
-
*
|
13
|
-
* pushes everything by default (`*.*`)
|
14
|
-
*/
|
15
|
-
scripts: string[];
|
16
|
-
/** callback called on script push */
|
17
|
-
onPush: (info: Info) => void;
|
18
|
-
/**
|
19
|
-
* when set to `true` forces use of quine cheats
|
20
|
-
*
|
21
|
-
* when set to `false` forces quine cheats not to be used
|
22
|
-
*
|
23
|
-
* when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
|
24
|
-
*/
|
25
|
-
forceQuineCheats: boolean;
|
26
|
-
};
|
27
|
-
/**
|
28
|
-
* Push scripts from a source directory to the hackmud directory.
|
29
|
-
*
|
30
|
-
* Pushes files directly in the source folder to all users
|
31
|
-
* @param sourceDirectory directory containing source code
|
32
|
-
* @param hackmudDirectory directory created by hackmud containing user data including scripts
|
33
|
-
* @param options {@link PushOptions details}
|
34
|
-
* @returns array of info on pushed scripts
|
35
|
-
*/
|
36
|
-
export declare const push: (sourceDirectory: string, hackmudDirectory: string, { scripts, onPush, minify, mangleNames, forceQuineCheats }?: LaxPartial<PushOptions>) => Promise<Info[]>;
|
37
|
-
export default push;
|