@sfmc-bds/bds-tools 0.1.0 → 0.2.0-beta.1

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 (73) hide show
  1. package/dist/bds-manager.d.ts.map +1 -1
  2. package/dist/bds-manager.js +236 -263
  3. package/dist/bds-manager.js.map +7 -1
  4. package/dist/changelog.js +39 -50
  5. package/dist/changelog.js.map +7 -1
  6. package/dist/check-update.d.ts +2 -2
  7. package/dist/check-update.d.ts.map +1 -1
  8. package/dist/check-update.js +361 -401
  9. package/dist/check-update.js.map +7 -1
  10. package/dist/cli-pack-manager.d.ts +10 -6
  11. package/dist/cli-pack-manager.d.ts.map +1 -1
  12. package/dist/cli-pack-manager.js +229 -134
  13. package/dist/cli-pack-manager.js.map +7 -1
  14. package/dist/fsx.d.ts +9 -0
  15. package/dist/fsx.d.ts.map +1 -1
  16. package/dist/fsx.js +105 -100
  17. package/dist/fsx.js.map +7 -1
  18. package/dist/http.d.ts.map +1 -1
  19. package/dist/http.js +166 -185
  20. package/dist/http.js.map +7 -1
  21. package/dist/is-main.d.ts +17 -0
  22. package/dist/is-main.d.ts.map +1 -0
  23. package/dist/is-main.js +32 -0
  24. package/dist/is-main.js.map +7 -0
  25. package/dist/log.d.ts +2 -4
  26. package/dist/log.d.ts.map +1 -1
  27. package/dist/log.js +12 -19
  28. package/dist/log.js.map +7 -1
  29. package/dist/logger.js +6 -10
  30. package/dist/logger.js.map +7 -1
  31. package/dist/pack-manager.d.ts +88 -24
  32. package/dist/pack-manager.d.ts.map +1 -1
  33. package/dist/pack-manager.js +282 -246
  34. package/dist/pack-manager.js.map +7 -1
  35. package/dist/paths.d.ts +8 -3
  36. package/dist/paths.d.ts.map +1 -1
  37. package/dist/paths.js +53 -39
  38. package/dist/paths.js.map +7 -1
  39. package/dist/qqutil.d.ts.map +1 -1
  40. package/dist/qqutil.js +90 -87
  41. package/dist/qqutil.js.map +7 -1
  42. package/dist/recovery.js +26 -37
  43. package/dist/recovery.js.map +7 -1
  44. package/dist/rollback.d.ts +1 -1
  45. package/dist/rollback.js +55 -74
  46. package/dist/rollback.js.map +7 -1
  47. package/dist/server-properties.d.ts +12 -0
  48. package/dist/server-properties.d.ts.map +1 -0
  49. package/dist/server-properties.js +28 -0
  50. package/dist/server-properties.js.map +7 -0
  51. package/dist/taskbar.d.ts +2 -0
  52. package/dist/taskbar.d.ts.map +1 -1
  53. package/dist/taskbar.js +51 -82
  54. package/dist/taskbar.js.map +7 -1
  55. package/dist/types.js +1 -5
  56. package/dist/types.js.map +7 -1
  57. package/dist/update-result.d.ts +18 -0
  58. package/dist/update-result.d.ts.map +1 -0
  59. package/dist/update-result.js +17 -0
  60. package/dist/update-result.js.map +7 -0
  61. package/dist/upstream.js +94 -108
  62. package/dist/upstream.js.map +7 -1
  63. package/dist/version.js +63 -81
  64. package/dist/version.js.map +7 -1
  65. package/dist/world-packs.d.ts +174 -0
  66. package/dist/world-packs.d.ts.map +1 -0
  67. package/dist/world-packs.js +509 -0
  68. package/dist/world-packs.js.map +7 -0
  69. package/dist/zipx.d.ts +10 -0
  70. package/dist/zipx.d.ts.map +1 -0
  71. package/dist/zipx.js +48 -0
  72. package/dist/zipx.js.map +7 -0
  73. package/package.json +17 -6
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/zipx.ts"],
4
+ "sourcesContent": ["/**\n * zipx.ts \u2014 JSZip \u5B89\u5168\u89E3\u538B\uFF08\u9632 zip-slip / \u7EDD\u5BF9\u8DEF\u5F84 / Windows `\\`\uFF09\n * \u5355\u4E00\u6743\u5A01\uFF0C\u4F9B world-packs / check-update / wizard / fetch-module \u590D\u7528\uFF08DRY\uFF09\u3002\n */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport JSZip from \"jszip\";\n\n/**\n * \u5C06 zip \u6761\u76EE\u540D\u89E3\u6790\u4E3A destRoot \u4E0B\u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\n * \u62D2\u7EDD `..`\u3001\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u542B\u524D\u5BFC `/`\u3001\u76D8\u7B26\uFF09\u3001\u4EE5\u53CA resolve \u540E\u9003\u9038 destRoot \u7684\u6761\u76EE\u3002\n */\nexport function resolveSafeZipEntryPath(destRoot: string, entryName: string): string {\n const raw = String(entryName ?? \"\").replace(/\\\\/g, \"/\");\n // \u5148\u4E8E\u53BB\u524D\u5BFC\u659C\u6760\u68C0\u67E5\uFF1A\u907F\u514D `/etc/passwd` \u88AB\u5265\u6210\u76F8\u5BF9\u8DEF\u5F84\u9759\u9ED8\u5199\u5165 dest\n if (!raw || raw.includes(\"..\") || raw.startsWith(\"/\") || /^[a-zA-Z]:/.test(raw)) {\n throw new Error(`unsafe zip entry path: ${entryName}`);\n }\n const parts = raw.replace(/\\/$/, \"\").split(\"/\").filter(Boolean);\n if (parts.length === 0) {\n throw new Error(`unsafe zip entry path: ${entryName}`);\n }\n const rootResolved = path.resolve(destRoot);\n const out = path.resolve(rootResolved, ...parts);\n const rootPrefix = rootResolved.endsWith(path.sep) ? rootResolved : rootResolved + path.sep;\n if (out !== rootResolved && !out.startsWith(rootPrefix)) {\n throw new Error(`zip entry escapes dest: ${entryName}`);\n }\n return out;\n}\n\n/** \u5C06 zip Buffer \u89E3\u538B\u5230 destDir\uFF08\u5DF2\u5B58\u5728\u5219\u5199\u5165\u5176\u4E0B\uFF09\u3002 */\nexport async function extractZipBufferToDir(data: Buffer, destDir: string): Promise<void> {\n const zip = await JSZip.loadAsync(data);\n await fs.promises.mkdir(destDir, { recursive: true });\n for (const name of Object.keys(zip.files)) {\n const entry = zip.files[name];\n if (!entry) continue;\n const out = resolveSafeZipEntryPath(destDir, name);\n if (entry.dir || name.endsWith(\"/\") || name.endsWith(\"\\\\\")) {\n await fs.promises.mkdir(out, { recursive: true });\n continue;\n }\n await fs.promises.mkdir(path.dirname(out), { recursive: true });\n const buf = await entry.async(\"nodebuffer\");\n await fs.promises.writeFile(out, buf);\n }\n}\n\n/** \u4ECE\u78C1\u76D8 zip \u6587\u4EF6\u89E3\u538B\u5230 destDir\u3002 */\nexport async function extractZipFileToDir(zipPath: string, destDir: string): Promise<void> {\n const abs = path.resolve(zipPath);\n if (!fs.existsSync(abs)) throw new Error(`archive not found: ${abs}`);\n const data = await fs.promises.readFile(abs);\n await extractZipBufferToDir(data, destDir);\n}\n"],
5
+ "mappings": "AAIA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,WAAW;AAMX,SAAS,wBAAwB,UAAkB,WAA2B;AACnF,QAAM,MAAM,OAAO,aAAa,EAAE,EAAE,QAAQ,OAAO,GAAG;AAEtD,MAAI,CAAC,OAAO,IAAI,SAAS,IAAI,KAAK,IAAI,WAAW,GAAG,KAAK,aAAa,KAAK,GAAG,GAAG;AAC/E,UAAM,IAAI,MAAM,0BAA0B,SAAS,EAAE;AAAA,EACvD;AACA,QAAM,QAAQ,IAAI,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AAC9D,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,IAAI,MAAM,0BAA0B,SAAS,EAAE;AAAA,EACvD;AACA,QAAM,eAAe,KAAK,QAAQ,QAAQ;AAC1C,QAAM,MAAM,KAAK,QAAQ,cAAc,GAAG,KAAK;AAC/C,QAAM,aAAa,aAAa,SAAS,KAAK,GAAG,IAAI,eAAe,eAAe,KAAK;AACxF,MAAI,QAAQ,gBAAgB,CAAC,IAAI,WAAW,UAAU,GAAG;AACvD,UAAM,IAAI,MAAM,2BAA2B,SAAS,EAAE;AAAA,EACxD;AACA,SAAO;AACT;AAGA,eAAsB,sBAAsB,MAAc,SAAgC;AACxF,QAAM,MAAM,MAAM,MAAM,UAAU,IAAI;AACtC,QAAM,GAAG,SAAS,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AACpD,aAAW,QAAQ,OAAO,KAAK,IAAI,KAAK,GAAG;AACzC,UAAM,QAAQ,IAAI,MAAM,IAAI;AAC5B,QAAI,CAAC,MAAO;AACZ,UAAM,MAAM,wBAAwB,SAAS,IAAI;AACjD,QAAI,MAAM,OAAO,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,GAAG;AAC1D,YAAM,GAAG,SAAS,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AAChD;AAAA,IACF;AACA,UAAM,GAAG,SAAS,MAAM,KAAK,QAAQ,GAAG,GAAG,EAAE,WAAW,KAAK,CAAC;AAC9D,UAAM,MAAM,MAAM,MAAM,MAAM,YAAY;AAC1C,UAAM,GAAG,SAAS,UAAU,KAAK,GAAG;AAAA,EACtC;AACF;AAGA,eAAsB,oBAAoB,SAAiB,SAAgC;AACzF,QAAM,MAAM,KAAK,QAAQ,OAAO;AAChC,MAAI,CAAC,GAAG,WAAW,GAAG,EAAG,OAAM,IAAI,MAAM,sBAAsB,GAAG,EAAE;AACpE,QAAM,OAAO,MAAM,GAAG,SAAS,SAAS,GAAG;AAC3C,QAAM,sBAAsB,MAAM,OAAO;AAC3C;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sfmc-bds/bds-tools",
3
- "version": "0.1.0",
3
+ "version": "0.2.0-beta.1",
4
4
  "description": "SFMC BDS auto-updater, lifecycle manager, and behavior-pack assembler",
5
5
  "author": "Shiroha7z",
6
6
  "type": "module",
@@ -27,15 +27,27 @@
27
27
  "README.md"
28
28
  ],
29
29
  "exports": {
30
+ ".": "./dist/bds-manager.js",
31
+ "./check-update": "./dist/check-update.js",
32
+ "./bds-manager": "./dist/bds-manager.js",
33
+ "./pack-manager": "./dist/cli-pack-manager.js",
34
+ "./pack-manager-lib": "./dist/pack-manager.js",
35
+ "./world-packs": "./dist/world-packs.js",
36
+ "./http": "./dist/http.js",
37
+ "./taskbar": "./dist/taskbar.js",
38
+ "./update-result": "./dist/update-result.js",
39
+ "./zipx": "./dist/zipx.js",
40
+ "./package.json": "./package.json",
30
41
  "./types": {
31
42
  "types": "./dist/types.d.ts"
32
43
  }
33
44
  },
34
45
  "scripts": {
35
- "build": "tsc -p tsconfig.json",
36
- "dev": "tsx src/dist/bds-manager.ts",
37
- "typecheck": "tsc --noEmit",
46
+ "build": "node ../scripts/esbuild-transpile.mjs --dts",
47
+ "dev": "tsx src/bds-manager.ts",
48
+ "typecheck": "tsc7 --noEmit",
38
49
  "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
50
+ "test": "node --test is-main.test.mjs pack-manager-lifecycle.test.mjs server-properties.test.mjs world-packs.test.mjs zipx.test.mjs",
39
51
  "update": "node dist/check-update.js",
40
52
  "update:check": "node dist/check-update.js --check-only",
41
53
  "update:force": "node dist/check-update.js --force",
@@ -47,8 +59,7 @@
47
59
  "prepublishOnly": "npm run build"
48
60
  },
49
61
  "dependencies": {
50
- "@sfmc-bds/sdk": "^0.1.0",
51
- "cli-progress": "^3.12.0",
62
+ "@sfmc-bds/sdk": "^0.2.0-beta.0",
52
63
  "jszip": "^3.10.1",
53
64
  "node-html-parser": "^9.0.0"
54
65
  },