hackmud-script-manager 0.13.0-a60a7a2 → 0.13.0-c461329

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.
Files changed (55) hide show
  1. package/.gitattributes +1 -0
  2. package/.github/workflows/codeql-analysis.yml +39 -0
  3. package/.github/workflows/publish.yml +42 -0
  4. package/.vscode/settings.json +6 -0
  5. package/babel.config.json +6 -0
  6. package/package.json +12 -21
  7. package/rollup.config.js +110 -0
  8. package/scripts/build-package-json.js +36 -0
  9. package/scripts/jsconfig.json +5 -0
  10. package/scripts/version-dev.js +25 -0
  11. package/src/bin/hsm.ts +505 -0
  12. package/src/constants.json +3 -0
  13. package/src/generateTypings.ts +116 -0
  14. package/src/index.ts +19 -0
  15. package/src/modules.d.ts +5 -0
  16. package/src/processScript/index.ts +198 -0
  17. package/src/processScript/minify.ts +529 -0
  18. package/src/processScript/postprocess.ts +38 -0
  19. package/src/processScript/preprocess.ts +146 -0
  20. package/src/processScript/transform.ts +760 -0
  21. package/src/pull.ts +16 -0
  22. package/src/push.ts +314 -0
  23. package/src/syncMacros.ts +52 -0
  24. package/src/test.ts +59 -0
  25. package/src/tsconfig.json +20 -0
  26. package/src/watch.ts +156 -0
  27. package/tsconfig.json +12 -0
  28. package/assert-1b7dada8.js +0 -1
  29. package/bin/hsm.d.ts +0 -2
  30. package/bin/hsm.js +0 -2
  31. package/generateTypings.d.ts +0 -2
  32. package/generateTypings.js +0 -1
  33. package/index.d.ts +0 -15
  34. package/index.js +0 -1
  35. package/processScript/compile.d.ts +0 -17
  36. package/processScript/compile.js +0 -1
  37. package/processScript/index.d.ts +0 -30
  38. package/processScript/index.js +0 -1
  39. package/processScript/minify.d.ts +0 -7
  40. package/processScript/minify.js +0 -1
  41. package/processScript/postProcess.d.ts +0 -2
  42. package/processScript/postProcess.js +0 -1
  43. package/processScript/preProcess.d.ts +0 -15
  44. package/processScript/preProcess.js +0 -1
  45. package/pull.d.ts +0 -9
  46. package/pull.js +0 -1
  47. package/push.d.ts +0 -26
  48. package/push.js +0 -1
  49. package/spliceString-2c6f214f.js +0 -1
  50. package/syncMacros.d.ts +0 -5
  51. package/syncMacros.js +0 -1
  52. package/test.d.ts +0 -6
  53. package/test.js +0 -1
  54. package/watch.d.ts +0 -14
  55. package/watch.js +0 -1
package/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ *.ts linguist-language=TypeScript
@@ -0,0 +1,39 @@
1
+ name: CodeQL
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ pull_request:
9
+ branches:
10
+ - main
11
+
12
+ schedule:
13
+ - cron: 45 7 * * 2
14
+
15
+ jobs:
16
+ analyze:
17
+ name: Analyze
18
+ runs-on: ubuntu-latest
19
+
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ language:
24
+ - javascript
25
+
26
+ steps:
27
+ - name: Checkout repository
28
+ uses: actions/checkout@v2
29
+
30
+ - name: Initialize CodeQL
31
+ uses: github/codeql-action/init@v1
32
+ with:
33
+ languages: ${{ matrix.language }}
34
+
35
+ - name: Autobuild
36
+ uses: github/codeql-action/autobuild@v1
37
+
38
+ - name: Perform CodeQL Analysis
39
+ uses: github/codeql-action/analyze@v1
@@ -0,0 +1,42 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ release:
9
+ types:
10
+ - created
11
+
12
+ pull_request:
13
+ types:
14
+ - closed
15
+
16
+ jobs:
17
+ publish:
18
+ name: Publish
19
+ runs-on: ubuntu-latest
20
+
21
+ steps:
22
+ - uses: actions/checkout@v2
23
+
24
+ - name: Setup node
25
+ uses: actions/setup-node@v1
26
+ with:
27
+ node-version: 14
28
+
29
+ - run: git config --global user.email github-action@users.noreply.github.com
30
+ - run: git config --global user.name "Github Action"
31
+ - run: npm ci
32
+ - run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
33
+
34
+ - name: Publish dev
35
+ if: github.event_name == 'push' || github.event_name == 'pull_request' && github.event.pull_request.merged
36
+ run: |
37
+ node scripts/version-dev
38
+ npm publish --tag dev
39
+
40
+ - name: Publish release
41
+ if: github.event_name == 'release'
42
+ run: npm publish
@@ -0,0 +1,6 @@
1
+ {
2
+ "typescript.tsdk": "node_modules/typescript/lib",
3
+ "editor.codeActionsOnSave": {
4
+ "source.organizeImports": true
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "presets": [
3
+ "@babel/preset-typescript",
4
+ [ "@babel/preset-env", { "targets": { "node": "12" } } ]
5
+ ]
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hackmud-script-manager",
3
- "version": "0.13.0-a60a7a2",
3
+ "version": "0.13.0-c461329",
4
4
  "description": "Script manager for game hackmud, with minification, TypeScript support, and player script type definition generation.",
5
5
  "keywords": [
6
6
  "api",
@@ -21,26 +21,14 @@
21
21
  "bugs": "https://github.com/samualtnorman/hackmud-script-manager/issues",
22
22
  "license": "GPL-3.0-or-later",
23
23
  "author": "Samual Norman",
24
- "files": [
25
- "*.d.ts",
26
- "*.js",
27
- "!*.config.js",
28
- "index.cjs",
29
- "bin",
30
- "processScript"
31
- ],
32
24
  "main": "index.js",
33
- "bin": {
34
- "hsm": "bin/hsm.js"
35
- },
36
25
  "repository": {
37
26
  "type": "git",
38
27
  "url": "https://github.com/samualtnorman/hackmud-script-manager.git"
39
28
  },
40
29
  "scripts": {
41
- "build": "rollup --config && tsc --project src",
42
- "dev": "rollup --config --watch",
43
- "prepublishOnly": "npm run build"
30
+ "build": "rm -rf dist && rollup --config && tsc --project src && node scripts/build-package-json && cp LICENSE index.cjs package-lock.json README.md dist",
31
+ "dev": "rollup --config --watch"
44
32
  },
45
33
  "dependencies": {
46
34
  "@babel/core": "^7.16.0",
@@ -68,23 +56,26 @@
68
56
  "@babel/plugin-transform-typescript": "^7.16.1",
69
57
  "@babel/traverse": "^7.16.3",
70
58
  "@babel/types": "^7.16.0",
59
+ "@bloomberg/record-tuple-polyfill": "^0.0.4",
60
+ "@rollup/plugin-babel": "^5.3.0",
61
+ "@rollup/plugin-commonjs": "^21.0.1",
62
+ "@rollup/plugin-json": "^4.1.0",
63
+ "@rollup/plugin-node-resolve": "^13.0.6",
71
64
  "acorn": "^8.5.0",
72
65
  "chalk": "^4.1.2",
73
66
  "chokidar": "^3.5.2",
67
+ "prettier": "^2.4.1",
68
+ "rollup": "^2.60.0",
74
69
  "terser": "^5.10.0"
75
70
  },
76
71
  "devDependencies": {
77
72
  "@babel/preset-env": "^7.16.4",
78
73
  "@babel/preset-typescript": "^7.16.0",
79
- "@rollup/plugin-babel": "^5.3.0",
80
- "@rollup/plugin-commonjs": "^21.0.1",
81
- "@rollup/plugin-json": "^4.1.0",
82
- "@rollup/plugin-node-resolve": "^13.0.6",
83
- "@samual/lib": "^0.2.0-e6a06ca",
74
+ "@samual/lib": "^0.2.0-27ea8d5",
84
75
  "@types/babel__core": "^7.1.16",
85
76
  "@types/node": "^12.20.37",
77
+ "@types/prettier": "^2.4.2",
86
78
  "@types/semver": "^7.3.9",
87
- "rollup": "^2.60.0",
88
79
  "rollup-plugin-preserve-shebang": "^1.0.1",
89
80
  "rollup-plugin-terser": "^7.0.2",
90
81
  "semver": "^7.3.5",
@@ -0,0 +1,110 @@
1
+ import babel from "@rollup/plugin-babel"
2
+ import commonJS from "@rollup/plugin-commonjs"
3
+ import json from "@rollup/plugin-json"
4
+ import nodeResolve from "@rollup/plugin-node-resolve"
5
+ import fs from "fs"
6
+ import preserveShebang from "rollup-plugin-preserve-shebang"
7
+ import { terser } from "rollup-plugin-terser"
8
+ import packageConfig from "./package.json"
9
+
10
+ const { readdir: readDirectory } = fs.promises
11
+
12
+ /** @typedef {import("rollup").RollupOptions} RollupOptions */
13
+
14
+ const plugins = [
15
+ babel({
16
+ babelHelpers: "bundled",
17
+ extensions: [ ".ts" ]
18
+ }),
19
+ commonJS(),
20
+ json({ preferConst: true }),
21
+ nodeResolve({ extensions: [ ".ts" ] }),
22
+ preserveShebang()
23
+ ]
24
+
25
+ const external = []
26
+
27
+ if ("dependencies" in packageConfig)
28
+ external.push(...Object.keys(packageConfig.dependencies))
29
+
30
+ const sourceDirectory = "src"
31
+ const findFilesPromise = findFiles(sourceDirectory)
32
+
33
+ /** @type {(command: Record<string, unknown>) => Promise<RollupOptions>} */
34
+ export default async ({ w }) => {
35
+ if (!w) {
36
+ plugins.push(terser({
37
+ ecma: 2019,
38
+ keep_classnames: true,
39
+ keep_fnames: true
40
+ }))
41
+ } else if ("devDependencies" in packageConfig)
42
+ external.push(...Object.keys(packageConfig.devDependencies).map(name => new RegExp(`^${name}(?:/|$)`)))
43
+
44
+ return {
45
+ input: Object.fromEntries(
46
+ (await findFilesPromise)
47
+ .filter(path => path.endsWith(".ts") && !path.endsWith(".d.ts"))
48
+ .map(path => [ path.slice(sourceDirectory.length + 1, -3), path ])
49
+ ),
50
+ output: {
51
+ dir: "dist",
52
+ interop: "auto"
53
+ },
54
+ plugins,
55
+ external,
56
+ preserveEntrySignatures: "allow-extension",
57
+ treeshake: {
58
+ moduleSideEffects: "no-external"
59
+ }
60
+ }
61
+ }
62
+
63
+ /**
64
+ * @param path the directory to start recursively finding files in
65
+ * @param filter either a blacklist or a filter function that returns false to ignore file name
66
+ * @returns promise that resolves to array of found files
67
+ * @type {(path: string, filter?: string[] | ((name: string) => boolean)) => Promise<string[]>}
68
+ */
69
+ async function findFiles(path, filter = []) {
70
+ const paths = []
71
+ let /** @type {(name: string) => boolean} */ filterFunction
72
+
73
+ if (Array.isArray(filter))
74
+ filterFunction = name => !filter.includes(name)
75
+ else
76
+ filterFunction = filter
77
+
78
+ for (const dirent of await readDirectory(path, { withFileTypes: true })) {
79
+ if (!filterFunction(dirent.name))
80
+ continue
81
+
82
+ const direntPath = `${path}/${dirent.name}`
83
+
84
+ if (dirent.isDirectory())
85
+ await findFilesSub(direntPath, filterFunction, paths)
86
+ else if (dirent.isFile())
87
+ paths.push(direntPath)
88
+ }
89
+
90
+ return paths
91
+ }
92
+
93
+ async function findFilesSub(path, filterFunction, paths) {
94
+ const promises = []
95
+
96
+ for (const dirent of await readDirectory(path, { withFileTypes: true })) {
97
+ if (!filterFunction(dirent.name))
98
+ continue
99
+
100
+ const direntPath = `${path}/${dirent.name}`
101
+
102
+ if (dirent.isDirectory())
103
+ promises.push(findFilesSub(direntPath, filterFunction, paths))
104
+ else if (dirent.isFile())
105
+ paths.push(direntPath)
106
+ }
107
+
108
+ await Promise.all(promises)
109
+ return paths
110
+ }
@@ -0,0 +1,36 @@
1
+ import findFiles from "@samual/lib/findFiles"
2
+ import fs from "fs"
3
+
4
+ const { writeFile, readFile } = fs.promises
5
+
6
+ ;(async () => {
7
+ const packageConfig = JSON.parse(await readFile("package.json", { encoding: "utf-8" }))
8
+
9
+ delete packageConfig.private
10
+ delete packageConfig.scripts
11
+
12
+ packageConfig.bin = {}
13
+
14
+ for (let name of await findFiles("dist")) {
15
+ name = `.${name.slice(4)}`
16
+
17
+ if (name.startsWith("./bin/") && name.endsWith(".js")) {
18
+ packageConfig.bin[name.slice(6, -3)] = name
19
+ continue
20
+ }
21
+
22
+ if (!name.endsWith(".d.ts"))
23
+ continue
24
+
25
+ name = name.slice(0, -5)
26
+
27
+ const nameWithExtension = `${name}.js`
28
+
29
+ packageConfig.exports[name] = nameWithExtension
30
+
31
+ if (name != "./index" && name.endsWith("/index"))
32
+ packageConfig.exports[name.slice(0, -6)] = nameWithExtension
33
+ }
34
+
35
+ await writeFile("dist/package.json", JSON.stringify(packageConfig, null, "\t"))
36
+ })()
@@ -0,0 +1,5 @@
1
+ {
2
+ "compilerOptions": {
3
+ "module": "ES2015"
4
+ }
5
+ }
@@ -0,0 +1,25 @@
1
+ import { exec as execute_ } from "child_process"
2
+ import fs from "fs"
3
+ import semver from "semver"
4
+ import { promisify } from "util"
5
+
6
+ const { readFile } = fs.promises
7
+ const execute = promisify(execute_)
8
+
9
+ ;(async () => {
10
+ const [ packageJSONFile, { stdout: gitGetHashStdout } ] = await Promise.all([
11
+ readFile("package.json", { encoding: "utf-8" }),
12
+ execute("git rev-parse --short HEAD")
13
+ ])
14
+
15
+ const { stdout, stderr } = await execute(
16
+ `npm version ${
17
+ semver.inc(JSON.parse(packageJSONFile).version, "minor")
18
+ }-${
19
+ gitGetHashStdout.trim()
20
+ }`
21
+ )
22
+
23
+ process.stdout.write(stdout)
24
+ process.stderr.write(stderr)
25
+ })()