hackmud-script-manager 0.21.1-412ee2f → 0.21.1-4b82bec

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-412ee2f",
3
+ "type": "module",
4
+ "version": "0.21.1-4b82bec",
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,18 +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
- ],
35
+ "exports": {
36
+ ".": "./index.js",
37
+ "./*": "./*.js",
38
+ "./*.js": "./*.js"
39
+ },
28
40
  "main": "index.js",
29
- "repository": {
30
- "type": "git",
31
- "url": "https://github.com/samualtnorman/hackmud-script-manager.git"
41
+ "bin": {
42
+ "hsm": "bin/hsm.js"
43
+ },
44
+ "peerDependencies": {
45
+ "typescript": "^5.4.5"
32
46
  },
33
47
  "dependencies": {
34
48
  "@babel/generator": "^7.26.2",
@@ -74,18 +88,6 @@
74
88
  "rollup": "^4.27.4",
75
89
  "terser": "^5.36.0"
76
90
  },
77
- "peerDependencies": {
78
- "typescript": "^5.4.5"
79
- },
80
- "type": "module",
81
- "exports": {
82
- ".": "./index.js",
83
- "./*": "./*.js",
84
- "./*.js": "./*.js"
85
- },
86
- "bin": {
87
- "hsm": "bin/hsm.js"
88
- },
89
91
  "engines": {
90
92
  "node": "^18 || >=20"
91
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 kodmqgd3vznhwpocrwyde60r 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 fhsls80vnoiilccc2cj8xbe8 from "@babel/plugin-proposal-decorators"
5
+ import mgyfhifxspq2c280zbq1cj9j from "@babel/plugin-proposal-destructuring-private"
6
+ import eq4wav0keu6i7s6jj995o58l from "@babel/plugin-proposal-explicit-resource-management"
7
+ import r9zbs8bvdeqvi7lt2g0ewyv4 from "@babel/plugin-transform-class-properties"
8
+ import sqh6g78wutsfm3bevbx14l5r from "@babel/plugin-transform-class-static-block"
9
+ import wswqnvwiu33udvnhyztwmvo9 from "@babel/plugin-transform-exponentiation-operator"
10
+ import d9xt8boakvgg0ohqkrulqjfn from "@babel/plugin-transform-json-strings"
11
+ import peblak400uzfeo2p4y43jaks from "@babel/plugin-transform-logical-assignment-operators"
12
+ import ikcspb1yxxe68g91mwj2xs68 from "@babel/plugin-transform-nullish-coalescing-operator"
13
+ import zjvp293gs4znawne8sebxxo3 from "@babel/plugin-transform-numeric-separator"
14
+ import zgqtwgx34o9uk9bfyknjwn15 from "@babel/plugin-transform-object-rest-spread"
15
+ import psojh3vsap0s7hkgrxt6sbye from "@babel/plugin-transform-optional-catch-binding"
16
+ import z19rflh1c5dhk8xlmgbpmuph from "@babel/plugin-transform-optional-chaining"
17
+ import whnvsv7k4upy6s4ooayk9cdz from "@babel/plugin-transform-private-property-in-object"
18
+ import yeqd5befi0mb7ia38ob53dnn from "@babel/plugin-transform-unicode-sets-regex"
19
+ import om6kstzqk3rvvz9ucftt0s5r 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 = kodmqgd3vznhwpocrwyde60r.default,
42
+ babelPluginProposalDecorators = fhsls80vnoiilccc2cj8xbe8.default,
43
+ babelPluginProposalDestructuringPrivate = mgyfhifxspq2c280zbq1cj9j.default,
44
+ babelPluginProposalExplicitResourceManagement = eq4wav0keu6i7s6jj995o58l.default,
45
+ babelPluginTransformClassProperties = r9zbs8bvdeqvi7lt2g0ewyv4.default,
46
+ babelPluginTransformClassStaticBlock = sqh6g78wutsfm3bevbx14l5r.default,
47
+ babelPluginTransformExponentiationOperator = wswqnvwiu33udvnhyztwmvo9.default,
48
+ babelPluginTransformJsonStrings = d9xt8boakvgg0ohqkrulqjfn.default,
49
+ babelPluginTransformLogicalAssignmentOperators = peblak400uzfeo2p4y43jaks.default,
50
+ babelPluginTransformNullishCoalescingOperator = ikcspb1yxxe68g91mwj2xs68.default,
51
+ babelPluginTransformNumericSeparator = zjvp293gs4znawne8sebxxo3.default,
52
+ babelPluginTransformObjectRestSpread = zgqtwgx34o9uk9bfyknjwn15.default,
53
+ babelPluginTransformOptionalCatchBinding = psojh3vsap0s7hkgrxt6sbye.default,
54
+ babelPluginTransformOptionalChaining = z19rflh1c5dhk8xlmgbpmuph.default,
55
+ babelPluginTransformPrivatePropertyInObject = whnvsv7k4upy6s4ooayk9cdz.default,
56
+ babelPluginTransformUnicodeSetsRegex = yeqd5befi0mb7ia38ob53dnn.default,
57
+ traverse = om6kstzqk3rvvz9ucftt0s5r.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
- plugins.push([
143
- (await import("@babel/plugin-transform-typescript")).default,
157
+ plugins.unshift([
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({
@@ -209,8 +224,16 @@ async function processScript(
209
224
  rollupPluginJSON({ preferConst: !0 }),
210
225
  {
211
226
  name: "hackmud-script-manager",
227
+ resolveId(source) {
228
+ if (source == filePathResolved) return filePathResolved
229
+ },
230
+ async load(id) {
231
+ if (id == filePathResolved) return (await preprocess(code, { uniqueId })).code
232
+ },
212
233
  async transform(code, id) {
213
- if (!id.includes("/node_modules/")) return (await preprocess(code, { uniqueId })).code
234
+ if (id == filePathResolved) return
235
+ if (isAbsolute(id) && !id.includes(`${sep}node_modules${sep}`))
236
+ return (await preprocess(code, { uniqueId })).code
214
237
  let program
215
238
  traverse(parse(code, { sourceType: "module" }), {
216
239
  Program(path) {
@@ -252,7 +275,7 @@ async function processScript(
252
275
  traverse(file, {
253
276
  MemberExpression({ node: memberExpression }) {
254
277
  if (!memberExpression.computed) {
255
- assert("Identifier" == memberExpression.property.type, "src/processScript/index.ts:326:60")
278
+ assert("Identifier" == memberExpression.property.type, "src/processScript/index.ts:336:60")
256
279
  if ("prototype" == memberExpression.property.name) {
257
280
  memberExpression.computed = !0
258
281
  memberExpression.property = t.stringLiteral("prototype")
@@ -282,7 +305,7 @@ async function processScript(
282
305
  break
283
306
  case "ObjectPattern":
284
307
  for (const property of lValue.properties) {
285
- assert("ObjectProperty" == property.type, "src/processScript/index.ts:356:51")
308
+ assert("ObjectProperty" == property.type, "src/processScript/index.ts:367:51")
286
309
  renameVariables(property.value)
287
310
  }
288
311
  break
@@ -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 kodmqgd3vznhwpocrwyde60r from "@babel/generator"
2
+ import om6kstzqk3rvvz9ucftt0s5r 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 = kodmqgd3vznhwpocrwyde60r.default,
11
+ traverse = om6kstzqk3rvvz9ucftt0s5r.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,26 +1,14 @@
1
- import babelGenerator from "@babel/generator"
1
+ import kodmqgd3vznhwpocrwyde60r from "@babel/generator"
2
2
  import { parse } from "@babel/parser"
3
- import babelTraverse from "@babel/traverse"
3
+ import om6kstzqk3rvvz9ucftt0s5r 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
- const { default: traverse } = babelTraverse,
10
- { default: generate } = babelGenerator,
11
- SUBSCRIPT_PREFIXES = ["s", "fs", "4s", "hs", "3s", "ms", "2s", "ls", "1s", "ns", "0s"]
8
+ const generate = kodmqgd3vznhwpocrwyde60r.default,
9
+ traverse = om6kstzqk3rvvz9ucftt0s5r.default
12
10
  async function preprocess(code, { uniqueId = "00000000000" } = {}) {
13
- assert(/^\w{11}$/.test(uniqueId), "src/processScript/preprocess.ts:26:36")
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:20:36")
24
12
  const sourceCode = code
25
13
  let lengthBefore, file, program
26
14
  do {
@@ -59,11 +47,11 @@ async function preprocess(code, { uniqueId = "00000000000" } = {}) {
59
47
  })
60
48
  break
61
49
  } catch (error_) {
62
- assert(error_ instanceof SyntaxError, "src/processScript/preprocess.ts:89:42")
50
+ assert(error_ instanceof SyntaxError, "src/processScript/preprocess.ts:64:42")
63
51
  error = error_
64
52
  }
65
53
  if ("BABEL_PARSER_SYNTAX_ERROR" != error.code || "PrivateInExpectedIn" != error.reasonCode) {
66
- console.log(/.+/.exec(code.slice(error.pos))?.[0])
54
+ console.error(/.+/.exec(code.slice(error.pos))?.[0])
67
55
  throw error
68
56
  }
69
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;