hackmud-script-manager 0.19.1-bd545f5 → 0.19.1-cb8d65f

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.
@@ -6,100 +6,100 @@ import { assert } from "@samual/lib/assert"
6
6
  import { spliceString } from "@samual/lib/spliceString"
7
7
  import { resolve } from "import-meta-resolve"
8
8
  const { default: traverse } = babelTraverse,
9
- { default: generate } = babelGenerator,
10
- preprocess = async (code, { uniqueID = "00000000000" } = {}) => {
11
- assert(/^\w{11}$/.test(uniqueID))
12
- const sourceCode = code
13
- let lengthBefore, file, program
14
- do {
15
- lengthBefore = code.length
16
- code = code
17
- .replace(/^\s+/, "")
18
- .replace(/^\/\/.*/, "")
19
- .replace(/^\/\*[\s\S]*?\*\//, "")
20
- } while (code.length != lengthBefore)
21
- code = code.replace(/^function\s*\(/, "export default function (")
22
- for (;;) {
23
- let error
24
- try {
25
- file = parse(code, {
26
- plugins: [
27
- "typescript",
28
- ["decorators", { decoratorsBeforeExport: !0 }],
29
- "doExpressions",
30
- "functionBind",
31
- "functionSent",
32
- "partialApplication",
33
- ["pipelineOperator", { proposal: "hack", topicToken: "%" }],
34
- "throwExpressions",
35
- ["recordAndTuple", { syntaxType: "hash" }],
36
- "classProperties",
37
- "classPrivateProperties",
38
- "classPrivateMethods",
39
- "logicalAssignment",
40
- "numericSeparator",
41
- "nullishCoalescingOperator",
42
- "optionalChaining",
43
- "optionalCatchBinding",
44
- "objectRestSpread"
45
- ],
46
- sourceType: "module"
47
- })
48
- break
49
- } catch (error_) {
50
- assert(error_ instanceof SyntaxError)
51
- error = error_
52
- }
53
- if ("BABEL_PARSER_SYNTAX_ERROR" != error.code || "PrivateInExpectedIn" != error.reasonCode) {
54
- console.log(/.+/.exec(code.slice(error.pos))?.[0])
55
- throw error
56
- }
57
- const codeSlice = code.slice(error.pos)
58
- let match
59
- if ((match = /^#[0-4fhmln]s\.scripts\.quine\(\)/.exec(codeSlice)))
60
- code = spliceString(code, JSON.stringify(sourceCode), error.pos, match[0].length)
61
- else if ((match = /^#[0-4fhmln]?s\./.exec(codeSlice))) code = spliceString(code, "$", error.pos, 1)
62
- else if ((match = /^#D[^\w$]/.exec(codeSlice))) code = spliceString(code, "$", error.pos, 1)
63
- else if ((match = /^#FMCL/.exec(codeSlice)))
64
- code = spliceString(code, `$${uniqueID}$FMCL$`, error.pos, match[0].length)
65
- else if ((match = /^#G/.exec(codeSlice)))
66
- code = spliceString(code, `$${uniqueID}$GLOBAL$`, error.pos, match[0].length)
67
- else {
68
- if (!(match = /^#db\./.exec(codeSlice))) throw error
69
- code = spliceString(code, "$", error.pos, 1)
70
- }
9
+ { default: generate } = babelGenerator
10
+ async function preprocess(code, { uniqueID = "00000000000" } = {}) {
11
+ assert(/^\w{11}$/.test(uniqueID), "src/processScript/preprocess.ts:23:36")
12
+ const sourceCode = code
13
+ let lengthBefore, file, program
14
+ do {
15
+ lengthBefore = code.length
16
+ code = code
17
+ .replace(/^\s+/, "")
18
+ .replace(/^\/\/.*/, "")
19
+ .replace(/^\/\*[\s\S]*?\*\//, "")
20
+ } while (code.length != lengthBefore)
21
+ code = code.replace(/^function\s*\(/, "export default function (")
22
+ for (;;) {
23
+ let error
24
+ try {
25
+ file = parse(code, {
26
+ plugins: [
27
+ "typescript",
28
+ ["decorators", { decoratorsBeforeExport: !0 }],
29
+ "doExpressions",
30
+ "functionBind",
31
+ "functionSent",
32
+ "partialApplication",
33
+ ["pipelineOperator", { proposal: "hack", topicToken: "%" }],
34
+ "throwExpressions",
35
+ ["recordAndTuple", { syntaxType: "hash" }],
36
+ "classProperties",
37
+ "classPrivateProperties",
38
+ "classPrivateMethods",
39
+ "logicalAssignment",
40
+ "numericSeparator",
41
+ "nullishCoalescingOperator",
42
+ "optionalChaining",
43
+ "optionalCatchBinding",
44
+ "objectRestSpread"
45
+ ],
46
+ sourceType: "module"
47
+ })
48
+ break
49
+ } catch (error_) {
50
+ assert(error_ instanceof SyntaxError, "src/processScript/preprocess.ts:67:42")
51
+ error = error_
71
52
  }
72
- traverse(file, {
73
- Program(path) {
74
- program = path
75
- path.skip()
76
- }
77
- })
78
- const needRecord = program.scope.hasGlobal("Record"),
79
- needTuple = program.scope.hasGlobal("Tuple")
80
- ;(needRecord || needTuple) &&
81
- file.program.body.unshift(
82
- t.importDeclaration(
83
- needRecord ?
84
- needTuple ?
85
- [
86
- t.importSpecifier(t.identifier("Record"), t.identifier("Record")),
87
- t.importSpecifier(t.identifier("Tuple"), t.identifier("Tuple"))
88
- ]
89
- : [t.importSpecifier(t.identifier("Record"), t.identifier("Record"))]
90
- : [t.importSpecifier(t.identifier("Tuple"), t.identifier("Tuple"))],
91
- t.stringLiteral("@bloomberg/record-tuple-polyfill")
92
- )
53
+ if ("BABEL_PARSER_SYNTAX_ERROR" != error.code || "PrivateInExpectedIn" != error.reasonCode) {
54
+ console.log(/.+/.exec(code.slice(error.pos))?.[0])
55
+ throw error
56
+ }
57
+ const codeSlice = code.slice(error.pos)
58
+ let match
59
+ if ((match = /^#[0-4fhmln]s\.scripts\.quine\(\)/.exec(codeSlice)))
60
+ code = spliceString(code, JSON.stringify(sourceCode), error.pos, match[0].length)
61
+ else if ((match = /^#[0-4fhmln]?s\./.exec(codeSlice))) code = spliceString(code, "$", error.pos, 1)
62
+ else if ((match = /^#D[^\w$]/.exec(codeSlice))) code = spliceString(code, "$", error.pos, 1)
63
+ else if ((match = /^#FMCL/.exec(codeSlice)))
64
+ code = spliceString(code, `$${uniqueID}$FMCL$`, error.pos, match[0].length)
65
+ else if ((match = /^#G/.exec(codeSlice)))
66
+ code = spliceString(code, `$${uniqueID}$GLOBAL$`, error.pos, match[0].length)
67
+ else {
68
+ if (!(match = /^#db\./.exec(codeSlice))) throw error
69
+ code = spliceString(code, "$", error.pos, 1)
70
+ }
71
+ }
72
+ traverse(file, {
73
+ Program(path) {
74
+ program = path
75
+ path.skip()
76
+ }
77
+ })
78
+ const needRecord = program.scope.hasGlobal("Record"),
79
+ needTuple = program.scope.hasGlobal("Tuple")
80
+ ;(needRecord || needTuple) &&
81
+ file.program.body.unshift(
82
+ t.importDeclaration(
83
+ needRecord ?
84
+ needTuple ?
85
+ [
86
+ t.importSpecifier(t.identifier("Record"), t.identifier("Record")),
87
+ t.importSpecifier(t.identifier("Tuple"), t.identifier("Tuple"))
88
+ ]
89
+ : [t.importSpecifier(t.identifier("Record"), t.identifier("Record"))]
90
+ : [t.importSpecifier(t.identifier("Tuple"), t.identifier("Tuple"))],
91
+ t.stringLiteral("@bloomberg/record-tuple-polyfill")
93
92
  )
94
- program.scope.hasGlobal("Proxy") &&
95
- file.program.body.unshift(
96
- t.importDeclaration(
97
- [t.importDefaultSpecifier(t.identifier("Proxy"))],
98
- t.stringLiteral((await resolve("proxy-polyfill/src/proxy.js", import.meta.url)).slice(7))
99
- )
93
+ )
94
+ program.scope.hasGlobal("Proxy") &&
95
+ file.program.body.unshift(
96
+ t.importDeclaration(
97
+ [t.importDefaultSpecifier(t.identifier("Proxy"))],
98
+ t.stringLiteral(resolve("proxy-polyfill/src/proxy.js", import.meta.url).slice(7))
100
99
  )
101
- return 1 == program.node.body.length && "FunctionDeclaration" == program.node.body[0].type ?
102
- { code: "export default " + generate(file).code }
103
- : { code: generate(file).code }
104
- }
100
+ )
101
+ return 1 == program.node.body.length && "FunctionDeclaration" == program.node.body[0].type ?
102
+ { code: "export default " + generate(file).code }
103
+ : { code: generate(file).code }
104
+ }
105
105
  export { preprocess as default, preprocess }
@@ -1,16 +1,16 @@
1
1
  import t from "@babel/types"
2
2
  import { ensure } from "@samual/lib/assert"
3
- const getReferencePathsToGlobal = (name, program) => {
4
- const [variableDeclaration] = program.unshiftContainer(
5
- "body",
6
- t.variableDeclaration("let", [t.variableDeclarator(t.identifier(name))])
7
- )
8
- program.scope.crawl()
9
- const binding = ensure(program.scope.getBinding(name))
10
- variableDeclaration.remove()
11
- return binding.referencePaths
12
- },
13
- includesIllegalString = toCheck =>
3
+ function getReferencePathsToGlobal(name, program) {
4
+ const [variableDeclaration] = program.unshiftContainer(
5
+ "body",
6
+ t.variableDeclaration("let", [t.variableDeclarator(t.identifier(name))])
7
+ )
8
+ program.scope.crawl()
9
+ const binding = ensure(program.scope.getBinding(name), "src/processScript/shared.ts:12:57")
10
+ variableDeclaration.remove()
11
+ return binding.referencePaths
12
+ }
13
+ const includesIllegalString = toCheck =>
14
14
  toCheck.includes("SC$") ||
15
15
  toCheck.includes("DB$") ||
16
16
  toCheck.includes("__D_S") ||