hackmud-script-manager 0.21.1-7aac667 → 0.21.1-7b1c428

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.
@@ -1,6 +1,5 @@
1
- import { readDirectoryWithStats } from "@samual/lib/readDirectoryWithStats"
2
1
  import { basename, resolve } from "path"
3
- import * as PathPosix from "path/posix"
2
+ import { readDirectoryWithStats } from "@samual/lib/readDirectoryWithStats"
4
3
  async function generateTypeDeclaration(sourceDirectory, hackmudPath) {
5
4
  const users = new Set()
6
5
  if (hackmudPath)
@@ -11,33 +10,35 @@ async function generateTypeDeclaration(sourceDirectory, hackmudPath) {
11
10
  allScripts = {},
12
11
  allAnyScripts = {}
13
12
  await Promise.all(
14
- (await readDirectoryWithStats(sourceDirectory)).map(async ({ stats, name }) => {
15
- if (stats.isFile())
16
- name.endsWith(".ts")
17
- ? name.endsWith(".d.ts") || wildScripts.push(basename(name, ".ts"))
18
- : name.endsWith(".js") && wildAnyScripts.push(basename(name, ".js"))
19
- else if (stats.isDirectory()) {
20
- const scripts = [],
21
- anyScripts = []
22
- allScripts[name] = scripts
23
- allAnyScripts[name] = anyScripts
24
- users.add(name)
25
- for (const child of await readDirectoryWithStats(resolve(sourceDirectory, name)))
26
- child.stats.isFile() &&
27
- (child.name.endsWith(".ts")
28
- ? name.endsWith(".d.ts") || scripts.push(basename(child.name, ".ts"))
29
- : child.name.endsWith(".js") && anyScripts.push(basename(child.name, ".js")))
30
- }
31
- })
13
+ (await readDirectoryWithStats(sourceDirectory))
14
+ .filter(({ stats, name }) => !stats.isDirectory() || /^[a-z_][a-z\d_]{0,24}$/.test(name))
15
+ .map(async ({ stats, name }) => {
16
+ if (stats.isFile())
17
+ name.endsWith(".ts")
18
+ ? name.endsWith(".d.ts") || wildScripts.push(basename(name, ".ts"))
19
+ : name.endsWith(".js") && wildAnyScripts.push(basename(name, ".js"))
20
+ else if (stats.isDirectory()) {
21
+ const scripts = [],
22
+ anyScripts = []
23
+ allScripts[name] = scripts
24
+ allAnyScripts[name] = anyScripts
25
+ users.add(name)
26
+ for (const child of await readDirectoryWithStats(resolve(sourceDirectory, name)))
27
+ child.stats.isFile() &&
28
+ (child.name.endsWith(".ts")
29
+ ? name.endsWith(".d.ts") || scripts.push(basename(child.name, ".ts"))
30
+ : child.name.endsWith(".js") && anyScripts.push(basename(child.name, ".js")))
31
+ }
32
+ })
32
33
  )
33
- sourceDirectory = PathPosix.resolve(sourceDirectory)
34
34
  let o = ""
35
- for (const script of wildScripts) o += `type $${script}$ = typeof import("${sourceDirectory}/${script}").default\n`
35
+ for (const script of wildScripts)
36
+ o += `type $${script}$ = typeof import(${JSON.stringify(resolve(sourceDirectory, script))}).default\n`
36
37
  o += "\n"
37
38
  for (const user in allScripts) {
38
39
  const scripts = allScripts[user]
39
40
  for (const script of scripts)
40
- o += `type $${user}$${script}$ = typeof import("${sourceDirectory}/${user}/${script}").default\n`
41
+ o += `type $${user}$${script}$ = typeof import(${JSON.stringify(resolve(sourceDirectory, user, script))}).default\n`
41
42
  }
42
43
  o +=
43
44
  "\ntype ArrayRemoveFirst<A> = A extends [ infer FirstItem, ...infer Rest ] ? Rest : never\n\ntype Subscript<T extends (...args: any) => any> =\n\t(...args: ArrayRemoveFirst<Parameters<T>>) => ReturnType<T> | ScriptFailure\n\ntype WildFullsec = Record<string, () => ScriptFailure> & {\n"
package/index.js CHANGED
@@ -5,9 +5,8 @@ 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 "@samual/lib/readDirectoryWithStats"
9
8
  import "path"
10
- import "path/posix"
9
+ import "@samual/lib/readDirectoryWithStats"
11
10
  import "@babel/generator"
12
11
  import "@babel/parser"
13
12
  import "@babel/plugin-proposal-decorators"
@@ -47,7 +46,7 @@ import "import-meta-resolve"
47
46
  import "./processScript/transform.js"
48
47
  import "@samual/lib/clearObject"
49
48
  import "@samual/lib/copyFilePersistent"
49
+ import "fs/promises"
50
50
  import "@samual/lib/AutoMap"
51
51
  import "@samual/lib/writeFilePersistent"
52
- import "fs/promises"
53
52
  import "chokidar"
package/package.json CHANGED
@@ -1,7 +1,22 @@
1
1
  {
2
2
  "name": "hackmud-script-manager",
3
- "version": "0.21.1-7aac667",
3
+ "type": "module",
4
+ "version": "0.21.1-7b1c428",
4
5
  "description": "Script manager for game hackmud, with minification, TypeScript support, and player script type definition generation.",
6
+ "author": "Samual Norman <me@samual.uk> (https://samual.uk/)",
7
+ "contributors": [
8
+ "Daniel Swann (https://github.com/danswann)",
9
+ "Longboyy",
10
+ "Helloman892",
11
+ "Sarah Klocke (https://sarahisweird.dev/)"
12
+ ],
13
+ "license": "MIT",
14
+ "homepage": "https://github.com/samualtnorman/hackmud-script-manager#readme",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/samualtnorman/hackmud-script-manager.git"
18
+ },
19
+ "bugs": "https://github.com/samualtnorman/hackmud-script-manager/issues",
5
20
  "keywords": [
6
21
  "api",
7
22
  "command-line",
@@ -17,19 +32,17 @@
17
32
  "golf",
18
33
  "golfer"
19
34
  ],
20
- "homepage": "https://github.com/samualtnorman/hackmud-script-manager#readme",
21
- "bugs": "https://github.com/samualtnorman/hackmud-script-manager/issues",
22
- "license": "MIT",
23
- "author": "Samual Norman <me@samual.uk> (https://samual.uk/)",
24
- "contributors": [
25
- "Daniel Swann (https://github.com/danswann)",
26
- "Longboyy",
27
- "Helloman892"
28
- ],
35
+ "exports": {
36
+ ".": "./index.js",
37
+ "./*": "./*.js",
38
+ "./*.js": "./*.js"
39
+ },
29
40
  "main": "index.js",
30
- "repository": {
31
- "type": "git",
32
- "url": "https://github.com/samualtnorman/hackmud-script-manager.git"
41
+ "bin": {
42
+ "hsm": "bin/hsm.js"
43
+ },
44
+ "peerDependencies": {
45
+ "typescript": "^5.4.5"
33
46
  },
34
47
  "dependencies": {
35
48
  "@babel/generator": "^7.26.2",
@@ -75,18 +88,6 @@
75
88
  "rollup": "^4.27.4",
76
89
  "terser": "^5.36.0"
77
90
  },
78
- "peerDependencies": {
79
- "typescript": "^5.4.5"
80
- },
81
- "type": "module",
82
- "exports": {
83
- ".": "./index.js",
84
- "./*": "./*.js",
85
- "./*.js": "./*.js"
86
- },
87
- "bin": {
88
- "hsm": "bin/hsm.js"
89
- },
90
91
  "engines": {
91
92
  "node": "^18 || >=20"
92
93
  }
@@ -9,20 +9,23 @@ export type ProcessOptions = LaxPartial<{
9
9
  /** the user going to be hosting this script (or set to `true` if not yet known) */ scriptUser: string | true;
10
10
  filePath: string;
11
11
  /** whether to mangle function and class names (defaults to `false`) */ mangleNames: boolean;
12
- /** when set to `true` forces use of quine cheats
13
- *
14
- * when set to `false` forces quine cheats not to be used
15
- *
16
- * when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
17
- */
12
+ /**
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
+ */
18
19
  forceQuineCheats: boolean;
19
20
  rootFolderPath: string;
20
21
  }> & {
21
22
  scriptName: string | true;
22
23
  };
23
- /** Minifies a given script
24
- * @param code JavaScript or TypeScript code
25
- * @param options {@link ProcessOptions details} */
24
+ /**
25
+ * Minifies a given script
26
+ * @param code JavaScript or TypeScript code
27
+ * @param options {@link ProcessOptions details}
28
+ */
26
29
  export declare function processScript(code: string, { minify: shouldMinify, uniqueId, scriptUser, scriptName, filePath, mangleNames, forceQuineCheats, rootFolderPath }: ProcessOptions): Promise<{
27
30
  script: string;
28
31
  warnings: {
@@ -1,21 +1,22 @@
1
- import babelGenerator from "@babel/generator"
1
+ import { relative, isAbsolute, sep } from "path"
2
+ import ujn0486i81rdajkphgiudnap from "@babel/generator"
2
3
  import { parse } from "@babel/parser"
3
- import babelPluginProposalDecorators from "@babel/plugin-proposal-decorators"
4
- import babelPluginProposalDestructuringPrivate from "@babel/plugin-proposal-destructuring-private"
5
- import babelPluginProposalExplicitResourceManagement from "@babel/plugin-proposal-explicit-resource-management"
6
- import babelPluginTransformClassProperties from "@babel/plugin-transform-class-properties"
7
- import babelPluginTransformClassStaticBlock from "@babel/plugin-transform-class-static-block"
8
- import babelPluginTransformExponentiationOperator from "@babel/plugin-transform-exponentiation-operator"
9
- import babelPluginTransformJsonStrings from "@babel/plugin-transform-json-strings"
10
- import babelPluginTransformLogicalAssignmentOperators from "@babel/plugin-transform-logical-assignment-operators"
11
- import babelPluginTransformNullishCoalescingOperator from "@babel/plugin-transform-nullish-coalescing-operator"
12
- import babelPluginTransformNumericSeparator from "@babel/plugin-transform-numeric-separator"
13
- import babelPluginTransformObjectRestSpread from "@babel/plugin-transform-object-rest-spread"
14
- import babelPluginTransformOptionalCatchBinding from "@babel/plugin-transform-optional-catch-binding"
15
- import babelPluginTransformOptionalChaining from "@babel/plugin-transform-optional-chaining"
16
- import babelPluginTransformPrivatePropertyInObject from "@babel/plugin-transform-private-property-in-object"
17
- import babelPluginTransformUnicodeSetsRegex from "@babel/plugin-transform-unicode-sets-regex"
18
- import babelTraverse from "@babel/traverse"
4
+ import k7psang1tpz6eabjq703p3fk from "@babel/plugin-proposal-decorators"
5
+ import zzu2uq45qpzok1b0f8718uhx from "@babel/plugin-proposal-destructuring-private"
6
+ import zxpe7ef02ayjtbwsjvszb4mz from "@babel/plugin-proposal-explicit-resource-management"
7
+ import xdorc4ryiyx33mosyoa35iic from "@babel/plugin-transform-class-properties"
8
+ import qx70bas1wirb7m11mfdaogbc from "@babel/plugin-transform-class-static-block"
9
+ import rndfrm5y6pet5wd1uwhn6h54 from "@babel/plugin-transform-exponentiation-operator"
10
+ import jxueey10fuzmzucqrpmmjklg from "@babel/plugin-transform-json-strings"
11
+ import rdg7sp217wwj9qugx0scn1rl from "@babel/plugin-transform-logical-assignment-operators"
12
+ import afxcwva4rno5psdkcom9d2nc from "@babel/plugin-transform-nullish-coalescing-operator"
13
+ import zqpmfoxz86cwrp3gooc0ji7a from "@babel/plugin-transform-numeric-separator"
14
+ import ubzsbocw1kcavjhbi7fzbcxh from "@babel/plugin-transform-object-rest-spread"
15
+ import ih33abnhwii5jbm2j43p0cg9 from "@babel/plugin-transform-optional-catch-binding"
16
+ import nbp9xeigug4d5vshp4xt9de2 from "@babel/plugin-transform-optional-chaining"
17
+ import jb9rvv8koat2j4wm3jejkbi8 from "@babel/plugin-transform-private-property-in-object"
18
+ import hc3x7aq9lzptn9r7h4wo3vdg from "@babel/plugin-transform-unicode-sets-regex"
19
+ import gxvr3xnjdibxqznvmlpo69ws from "@babel/traverse"
19
20
  import t from "@babel/types"
20
21
  import rollupPluginAlias from "@rollup/plugin-alias"
21
22
  import { babel } from "@rollup/plugin-babel"
@@ -23,7 +24,6 @@ import rollupPluginCommonJS from "@rollup/plugin-commonjs"
23
24
  import rollupPluginJSON from "@rollup/plugin-json"
24
25
  import rollupPluginNodeResolve from "@rollup/plugin-node-resolve"
25
26
  import { assert } from "@samual/lib/assert"
26
- import { relative } from "path"
27
27
  import prettier from "prettier"
28
28
  import { rollup } from "rollup"
29
29
  import { supportedExtensions } from "../constants.js"
@@ -38,9 +38,24 @@ import "acorn"
38
38
  import "terser"
39
39
  import "import-meta-resolve"
40
40
  import "@samual/lib/clearObject"
41
- const { format } = prettier,
42
- { default: generate } = babelGenerator,
43
- { default: traverse } = babelTraverse
41
+ const generate = ujn0486i81rdajkphgiudnap.default,
42
+ babelPluginProposalDecorators = k7psang1tpz6eabjq703p3fk.default,
43
+ babelPluginProposalDestructuringPrivate = zzu2uq45qpzok1b0f8718uhx.default,
44
+ babelPluginProposalExplicitResourceManagement = zxpe7ef02ayjtbwsjvszb4mz.default,
45
+ babelPluginTransformClassProperties = xdorc4ryiyx33mosyoa35iic.default,
46
+ babelPluginTransformClassStaticBlock = qx70bas1wirb7m11mfdaogbc.default,
47
+ babelPluginTransformExponentiationOperator = rndfrm5y6pet5wd1uwhn6h54.default,
48
+ babelPluginTransformJsonStrings = jxueey10fuzmzucqrpmmjklg.default,
49
+ babelPluginTransformLogicalAssignmentOperators = rdg7sp217wwj9qugx0scn1rl.default,
50
+ babelPluginTransformNullishCoalescingOperator = afxcwva4rno5psdkcom9d2nc.default,
51
+ babelPluginTransformNumericSeparator = zqpmfoxz86cwrp3gooc0ji7a.default,
52
+ babelPluginTransformObjectRestSpread = ubzsbocw1kcavjhbi7fzbcxh.default,
53
+ babelPluginTransformOptionalCatchBinding = ih33abnhwii5jbm2j43p0cg9.default,
54
+ babelPluginTransformOptionalChaining = nbp9xeigug4d5vshp4xt9de2.default,
55
+ babelPluginTransformPrivatePropertyInObject = jb9rvv8koat2j4wm3jejkbi8.default,
56
+ babelPluginTransformUnicodeSetsRegex = hc3x7aq9lzptn9r7h4wo3vdg.default,
57
+ traverse = gxvr3xnjdibxqznvmlpo69ws.default,
58
+ { format } = prettier
44
59
  async function processScript(
45
60
  code,
46
61
  {
@@ -56,7 +71,7 @@ async function processScript(
56
71
  rootFolderPath
57
72
  }
58
73
  ) {
59
- assert(/^\w{11}$/.exec(uniqueId), "src/processScript/index.ts:81:36")
74
+ assert(/^\w{11}$/.exec(uniqueId), "src/processScript/index.ts:82:36")
60
75
  const sourceCode = code
61
76
  let autocomplete, statedSeclevel
62
77
  const autocompleteMatch = /^function\s*\(.+\/\/(?<autocomplete>.+)/.exec(code)
@@ -117,30 +132,30 @@ async function processScript(
117
132
  }
118
133
  }
119
134
  }
120
- assert(/^\w{11}$/.exec(uniqueId), "src/processScript/index.ts:162:36")
135
+ assert(/^\w{11}$/.exec(uniqueId), "src/processScript/index.ts:161:36")
121
136
  const plugins = [
122
- [babelPluginProposalDecorators.default, { decoratorsBeforeExport: !0 }],
123
- [babelPluginTransformClassProperties.default],
124
- [babelPluginTransformClassStaticBlock.default],
125
- [babelPluginTransformPrivatePropertyInObject.default],
126
- [babelPluginTransformLogicalAssignmentOperators.default],
127
- [babelPluginTransformNumericSeparator.default],
128
- [babelPluginTransformNullishCoalescingOperator.default],
129
- [babelPluginTransformOptionalChaining.default],
130
- [babelPluginTransformOptionalCatchBinding.default],
131
- [babelPluginTransformJsonStrings.default],
132
- [babelPluginTransformObjectRestSpread.default],
133
- [babelPluginTransformExponentiationOperator.default],
134
- [babelPluginTransformUnicodeSetsRegex.default],
135
- [babelPluginProposalDestructuringPrivate.default],
136
- [babelPluginProposalExplicitResourceManagement.default]
137
+ [babelPluginProposalDecorators, { decoratorsBeforeExport: !0 }],
138
+ [babelPluginTransformClassProperties],
139
+ [babelPluginTransformClassStaticBlock],
140
+ [babelPluginTransformPrivatePropertyInObject],
141
+ [babelPluginTransformLogicalAssignmentOperators],
142
+ [babelPluginTransformNumericSeparator],
143
+ [babelPluginTransformNullishCoalescingOperator],
144
+ [babelPluginTransformOptionalChaining],
145
+ [babelPluginTransformOptionalCatchBinding],
146
+ [babelPluginTransformJsonStrings],
147
+ [babelPluginTransformObjectRestSpread],
148
+ [babelPluginTransformExponentiationOperator],
149
+ [babelPluginTransformUnicodeSetsRegex],
150
+ [babelPluginProposalDestructuringPrivate],
151
+ [babelPluginProposalExplicitResourceManagement]
137
152
  ]
138
153
  let filePathResolved
139
154
  if (filePath) {
140
155
  filePathResolved = relative(".", filePath)
141
156
  if (filePath.endsWith(".ts"))
142
157
  plugins.push([
143
- (await import("@babel/plugin-transform-typescript")).default,
158
+ await import("@babel/plugin-transform-typescript").then(module => module.default),
144
159
  { allowDeclareFields: !0, optimizeConstEnums: !0 }
145
160
  ])
146
161
  else {
@@ -153,22 +168,22 @@ async function processScript(
153
168
  babelPluginProposalThrowExpressions,
154
169
  babelPluginProposalRecordAndTuple
155
170
  ] = await Promise.all([
156
- import("@babel/plugin-proposal-do-expressions"),
157
- import("@babel/plugin-proposal-function-bind"),
158
- import("@babel/plugin-proposal-function-sent"),
159
- import("@babel/plugin-proposal-partial-application"),
160
- import("@babel/plugin-proposal-pipeline-operator"),
161
- import("@babel/plugin-proposal-throw-expressions"),
162
- import("@babel/plugin-proposal-record-and-tuple")
171
+ import("@babel/plugin-proposal-do-expressions").then(module => module.default),
172
+ import("@babel/plugin-proposal-function-bind").then(module => module.default),
173
+ import("@babel/plugin-proposal-function-sent").then(module => module.default),
174
+ import("@babel/plugin-proposal-partial-application").then(module => module.default),
175
+ import("@babel/plugin-proposal-pipeline-operator").then(module => module.default),
176
+ import("@babel/plugin-proposal-throw-expressions").then(module => module.default),
177
+ import("@babel/plugin-proposal-record-and-tuple").then(module => module.default)
163
178
  ])
164
179
  plugins.push(
165
- [babelPluginProposalDoExpressions.default],
166
- [babelPluginProposalFunctionBind.default],
167
- [babelPluginProposalFunctionSent.default],
168
- [babelPluginProposalPartialApplication.default],
169
- [babelPluginProposalPipelineOperator.default, { proposal: "hack", topicToken: "%" }],
170
- [babelPluginProposalThrowExpressions.default],
171
- [babelPluginProposalRecordAndTuple.default, { syntaxType: "hash", importPolyfill: !0 }]
180
+ [babelPluginProposalDoExpressions],
181
+ [babelPluginProposalFunctionBind],
182
+ [babelPluginProposalFunctionSent],
183
+ [babelPluginProposalPartialApplication],
184
+ [babelPluginProposalPipelineOperator, { proposal: "hack", topicToken: "%" }],
185
+ [babelPluginProposalThrowExpressions],
186
+ [babelPluginProposalRecordAndTuple, { syntaxType: "hash", importPolyfill: !0 }]
172
187
  )
173
188
  }
174
189
  } else {
@@ -183,24 +198,24 @@ async function processScript(
183
198
  babelPluginProposalThrowExpressions,
184
199
  babelPluginProposalRecordAndTuple
185
200
  ] = await Promise.all([
186
- import("@babel/plugin-transform-typescript"),
187
- import("@babel/plugin-proposal-do-expressions"),
188
- import("@babel/plugin-proposal-function-bind"),
189
- import("@babel/plugin-proposal-function-sent"),
190
- import("@babel/plugin-proposal-partial-application"),
191
- import("@babel/plugin-proposal-pipeline-operator"),
192
- import("@babel/plugin-proposal-throw-expressions"),
193
- import("@babel/plugin-proposal-record-and-tuple")
201
+ import("@babel/plugin-transform-typescript").then(module => module.default),
202
+ import("@babel/plugin-proposal-do-expressions").then(module => module.default),
203
+ import("@babel/plugin-proposal-function-bind").then(module => module.default),
204
+ import("@babel/plugin-proposal-function-sent").then(module => module.default),
205
+ import("@babel/plugin-proposal-partial-application").then(module => module.default),
206
+ import("@babel/plugin-proposal-pipeline-operator").then(module => module.default),
207
+ import("@babel/plugin-proposal-throw-expressions").then(module => module.default),
208
+ import("@babel/plugin-proposal-record-and-tuple").then(module => module.default)
194
209
  ])
195
210
  plugins.push(
196
- [babelPluginTransformTypescript.default, { allowDeclareFields: !0, optimizeConstEnums: !0 }],
197
- [babelPluginProposalDoExpressions.default],
198
- [babelPluginProposalFunctionBind.default],
199
- [babelPluginProposalFunctionSent.default],
200
- [babelPluginProposalPartialApplication.default],
201
- [babelPluginProposalPipelineOperator.default, { proposal: "hack", topicToken: "%" }],
202
- [babelPluginProposalThrowExpressions.default],
203
- [babelPluginProposalRecordAndTuple.default, { syntaxType: "hash", importPolyfill: !0 }]
211
+ [babelPluginTransformTypescript, { allowDeclareFields: !0, optimizeConstEnums: !0 }],
212
+ [babelPluginProposalDoExpressions],
213
+ [babelPluginProposalFunctionBind],
214
+ [babelPluginProposalFunctionSent],
215
+ [babelPluginProposalPartialApplication],
216
+ [babelPluginProposalPipelineOperator, { proposal: "hack", topicToken: "%" }],
217
+ [babelPluginProposalThrowExpressions],
218
+ [babelPluginProposalRecordAndTuple, { syntaxType: "hash", importPolyfill: !0 }]
204
219
  )
205
220
  }
206
221
  const bundle = await rollup({
@@ -210,7 +225,7 @@ async function processScript(
210
225
  {
211
226
  name: "hackmud-script-manager",
212
227
  async transform(code, id) {
213
- if (id.startsWith("/") && !id.includes("/node_modules/"))
228
+ if (isAbsolute(id) && !id.includes(`${sep}node_modules${sep}`))
214
229
  return (await preprocess(code, { uniqueId })).code
215
230
  let program
216
231
  traverse(parse(code, { sourceType: "module" }), {
@@ -253,7 +268,7 @@ async function processScript(
253
268
  traverse(file, {
254
269
  MemberExpression({ node: memberExpression }) {
255
270
  if (!memberExpression.computed) {
256
- assert("Identifier" == memberExpression.property.type, "src/processScript/index.ts:326:60")
271
+ assert("Identifier" == memberExpression.property.type, "src/processScript/index.ts:325:60")
257
272
  if ("prototype" == memberExpression.property.name) {
258
273
  memberExpression.computed = !0
259
274
  memberExpression.property = t.stringLiteral("prototype")
@@ -3,16 +3,19 @@ import type { LaxPartial } from "@samual/lib";
3
3
  type MinifyOptions = LaxPartial<{
4
4
  /** 11 a-z 0-9 characters */ uniqueId: string;
5
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
- */
6
+ /**
7
+ * when set to `true` forces use of quine cheats
8
+ *
9
+ * when set to `false` forces quine cheats not to be used
10
+ *
11
+ * when left unset or set to `undefined`, automatically uses or doesn't use quine cheats based on character count
12
+ */
12
13
  forceQuineCheats: boolean;
13
14
  /** the comment inserted after the function signature */ autocomplete: string;
14
15
  }>;
15
- /** @param file babel ast node representing a file containing transformed code
16
- * @param options {@link MinifyOptions details} */
16
+ /**
17
+ * @param file babel ast node representing a file containing transformed code
18
+ * @param options {@link MinifyOptions details}
19
+ */
17
20
  export declare function minify(file: File, { uniqueId, mangleNames, forceQuineCheats, autocomplete }?: MinifyOptions): Promise<string>;
18
21
  export {};
@@ -1,5 +1,5 @@
1
- import babelGenerator from "@babel/generator"
2
- import babelTraverse from "@babel/traverse"
1
+ import ujn0486i81rdajkphgiudnap from "@babel/generator"
2
+ import gxvr3xnjdibxqznvmlpo69ws from "@babel/traverse"
3
3
  import t from "@babel/types"
4
4
  import { assert } from "@samual/lib/assert"
5
5
  import { countHackmudCharacters } from "@samual/lib/countHackmudCharacters"
@@ -7,12 +7,12 @@ import { spliceString } from "@samual/lib/spliceString"
7
7
  import { tokenizer, tokTypes } from "acorn"
8
8
  import * as terser from "terser"
9
9
  import { getReferencePathsToGlobal, includesIllegalString, replaceUnsafeStrings } from "./shared.js"
10
- const { default: generate } = babelGenerator,
11
- { default: traverse } = babelTraverse,
10
+ const generate = ujn0486i81rdajkphgiudnap.default,
11
+ traverse = gxvr3xnjdibxqznvmlpo69ws.default,
12
12
  minifyNumber = async number =>
13
13
  /\$\((?<number>.+)\)/.exec((await terser.minify(`$(${number})`, { ecma: 2015 })).code).groups.number
14
14
  async function minify(file, { uniqueId = "00000000000", mangleNames = !1, forceQuineCheats, autocomplete } = {}) {
15
- assert(/^\w{11}$/.exec(uniqueId), "src/processScript/minify.ts:46:36")
15
+ assert(/^\w{11}$/.exec(uniqueId), "src/processScript/minify.ts:45:36")
16
16
  let program
17
17
  traverse(file, {
18
18
  Program(path) {
@@ -52,7 +52,7 @@ async function minify(file, { uniqueId = "00000000000", mangleNames = !1, forceQ
52
52
  traverse(fileBeforeJSONValueReplacement, {
53
53
  MemberExpression({ node: memberExpression }) {
54
54
  if (!memberExpression.computed) {
55
- assert("Identifier" == memberExpression.property.type, "src/processScript/minify.ts:115:60")
55
+ assert("Identifier" == memberExpression.property.type, "src/processScript/minify.ts:113:60")
56
56
  if ("prototype" == memberExpression.property.name) {
57
57
  memberExpression.computed = !0
58
58
  memberExpression.property = t.identifier(`_${uniqueId}_PROTOTYPE_PROPERTY_`)
@@ -164,7 +164,7 @@ async function minify(file, { uniqueId = "00000000000", mangleNames = !1, forceQ
164
164
  },
165
165
  MemberExpression({ node: memberExpression }) {
166
166
  if (!memberExpression.computed) {
167
- assert("Identifier" == memberExpression.property.type, "src/processScript/minify.ts:249:62")
167
+ assert("Identifier" == memberExpression.property.type, "src/processScript/minify.ts:248:62")
168
168
  if (!(memberExpression.property.name.length < 3)) {
169
169
  memberExpression.computed = !0
170
170
  memberExpression.property = t.stringLiteral(memberExpression.property.name)
@@ -238,7 +238,7 @@ async function minify(file, { uniqueId = "00000000000", mangleNames = !1, forceQ
238
238
  })
239
239
  await Promise.all(promises)
240
240
  const functionDeclaration = file.program.body[0]
241
- assert("FunctionDeclaration" == functionDeclaration.type, "src/processScript/minify.ts:354:61")
241
+ assert("FunctionDeclaration" == functionDeclaration.type, "src/processScript/minify.ts:350:61")
242
242
  if (jsonValues.length) {
243
243
  hasComment = !0
244
244
  if (1 == jsonValues.length)
@@ -358,7 +358,7 @@ async function minify(file, { uniqueId = "00000000000", mangleNames = !1, forceQ
358
358
  )
359
359
  }
360
360
  if (1 == forceQuineCheats) return code
361
- assert(scriptBeforeJSONValueReplacement, "src/processScript/minify.ts:485:43")
361
+ assert(scriptBeforeJSONValueReplacement, "src/processScript/minify.ts:481:43")
362
362
  return countHackmudCharacters(scriptBeforeJSONValueReplacement) <= countHackmudCharacters(code) + Number(hasComment)
363
363
  ? scriptBeforeJSONValueReplacement
364
364
  : code
@@ -371,7 +371,7 @@ function parseObjectExpression(node, o) {
371
371
  "Identifier" == property.key.type ||
372
372
  "NumericLiteral" == property.key.type ||
373
373
  "StringLiteral" == property.key.type,
374
- "src/processScript/minify.ts:507:4"
374
+ "src/processScript/minify.ts:503:4"
375
375
  )
376
376
  if ("ArrayExpression" == property.value.type) {
377
377
  const childArray = []
@@ -2,8 +2,10 @@ import type { LaxPartial } from "@samual/lib";
2
2
  export type PreprocessOptions = LaxPartial<{
3
3
  uniqueId: string;
4
4
  }>;
5
- /** @param code source code for preprocessing
6
- * @param options {@link PreprocessOptions details} */
5
+ /**
6
+ * @param code source code for preprocessing
7
+ * @param options {@link PreprocessOptions details}
8
+ */
7
9
  export declare function preprocess(code: string, { uniqueId }?: PreprocessOptions): Promise<{
8
10
  code: string;
9
11
  }>;
@@ -1,14 +1,14 @@
1
- import babelGenerator from "@babel/generator"
1
+ import ujn0486i81rdajkphgiudnap from "@babel/generator"
2
2
  import { parse } from "@babel/parser"
3
- import babelTraverse from "@babel/traverse"
3
+ import gxvr3xnjdibxqznvmlpo69ws 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
7
  import { resolve } from "import-meta-resolve"
8
- const { default: traverse } = babelTraverse,
9
- { default: generate } = babelGenerator
8
+ const generate = ujn0486i81rdajkphgiudnap.default,
9
+ traverse = gxvr3xnjdibxqznvmlpo69ws.default
10
10
  async function preprocess(code, { uniqueId = "00000000000" } = {}) {
11
- assert(/^\w{11}$/.test(uniqueId), "src/processScript/preprocess.ts:23:36")
11
+ assert(/^\w{11}$/.test(uniqueId), "src/processScript/preprocess.ts:20:36")
12
12
  const sourceCode = code
13
13
  let lengthBefore, file, program
14
14
  do {
@@ -47,11 +47,11 @@ async function preprocess(code, { uniqueId = "00000000000" } = {}) {
47
47
  })
48
48
  break
49
49
  } catch (error_) {
50
- assert(error_ instanceof SyntaxError, "src/processScript/preprocess.ts:67:42")
50
+ assert(error_ instanceof SyntaxError, "src/processScript/preprocess.ts:64:42")
51
51
  error = error_
52
52
  }
53
53
  if ("BABEL_PARSER_SYNTAX_ERROR" != error.code || "PrivateInExpectedIn" != error.reasonCode) {
54
- console.log(/.+/.exec(code.slice(error.pos))?.[0])
54
+ console.error(/.+/.exec(code.slice(error.pos))?.[0])
55
55
  throw error
56
56
  }
57
57
  const codeSlice = code.slice(error.pos)
@@ -7,12 +7,14 @@ export type TransformOptions = LaxPartial<{
7
7
  }> & {
8
8
  scriptName: string | true;
9
9
  };
10
- /** transform a given babel `File` to be hackmud compatible
11
- *
12
- * (returned File will need `postprocess()`ing)
13
- * @param file babel ast node representing a file containing preprocessed code
14
- * @param sourceCode the original untouched source code
15
- * @param options {@link TransformOptions details} */
10
+ /**
11
+ * transform a given babel `File` to be hackmud compatible
12
+ *
13
+ * (returned File will need `postprocess()`ing)
14
+ * @param file babel ast node representing a file containing preprocessed code
15
+ * @param sourceCode the original untouched source code
16
+ * @param options {@link TransformOptions details}
17
+ */
16
18
  export declare function transform(file: File, sourceCode: string, { uniqueId, scriptUser, scriptName, seclevel }: TransformOptions): {
17
19
  file: File;
18
20
  seclevel: number;