@kezh/my-custom-js-converter 1.6.1 → 1.6.3

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.
@@ -236,7 +236,7 @@ function askConflictChoice(depName, candidates) {
236
236
  });
237
237
  }
238
238
  /**
239
- * 从onFormReady方法中提取版本日志并移除,将版本号写入version文件
239
+ * 从onFormReady方法中提取版本日志并移除,将版本号加1后写入version文件
240
240
  * @param srcAst - 源码AST
241
241
  * @param settingDir - setting目录路径
242
242
  */
@@ -281,8 +281,8 @@ function extractAndRemoveVersionLog(srcAst, settingDir) {
281
281
  }
282
282
  }
283
283
  });
284
- // 将版本号写入version文件
284
+ // 将版本号写入version文件(加1,避免下次encode生成与源码相同的版本号)
285
285
  if (extractedVersion) {
286
- (0, version_1.writeVersion)(settingDir, extractedVersion);
286
+ (0, version_1.writeVersion)(settingDir, (0, version_1.incrementVersionValue)(extractedVersion));
287
287
  }
288
288
  }
package/core/util/ast.js CHANGED
@@ -37,19 +37,36 @@ function parseSrcAst(srcPath) {
37
37
  });
38
38
  return (0, parser_1.parse)(src);
39
39
  }
40
+ /**
41
+ * 修复 Babel generator 对对象字面量/方法属性间行注释的错位问题。
42
+ *
43
+ * Babel 解析 `prop, // comment\n nextProp` 时,会把 `// comment` 挂到下一个
44
+ * 属性的 leadingComments,生成时输出在下一属性上方,导致注释视觉上"下移一行"。
45
+ * 此函数将 `,\n // comment\n 标识符` 还原为 `, // comment\n 标识符`。
46
+ */
47
+ function fixMisplacedLineComments(code) {
48
+ // 1. 先处理连续两行注释、其中第一个本应属于上一属性行尾的情况:
49
+ // `prop,\n //c1\n //c2\n nextKey` → `prop, //c1\n //c2\n nextKey`
50
+ // (c1 上移到上一属性行尾,c2 保持独占行)
51
+ code = code.replace(/,\r?\n(\s*)(\/\/[^\r\n]*)\r?\n(\s*)(\/\/[^\r\n]*)\r?\n(\s*)(\w)/g, (_m, sp1, c1, sp2, c2, sp3, key) => `, ${c1}\r\n${sp2}${c2}\r\n${sp3}${key}`);
52
+ // 2. 再处理单个行注释错位:
53
+ // `prop,\n //comment\n nextKey` → `prop, //comment\n nextKey`
54
+ code = code.replace(/,\r?\n(\s*)(\/\/[^\r\n]*)\r?\n(\s*)(\w)/g, (_m, _sp1, comment, sp2, key) => `, ${comment}\r\n${sp2}${key}`);
55
+ return code;
56
+ }
40
57
  function outputObjectMethods(outPath, methods) {
41
58
  let dist = methods
42
59
  .map((m) => {
43
- var _a;
44
- if ((_a = m.leadingComments) === null || _a === void 0 ? void 0 : _a.length) {
45
- m.leadingComments = undefined;
46
- }
60
+ // 保留 leadingComments:原代码会删除方法前置注释,但 Babel 会把上一个方法/属性
61
+ // 的行尾注释挂到当前方法的 leadingComments,删除会导致这些注释丢失。
62
+ // 改由 fixMisplacedLineComments 在生成后修正错位。
47
63
  return m;
48
64
  })
49
65
  .map((m) => (0, generator_1.default)(m))
50
66
  .map((m) => m.code)
51
67
  .join(`,\n`);
52
68
  dist = dist.replace(/\n/gm, os_1.EOL);
69
+ dist = fixMisplacedLineComments(dist);
53
70
  fs_1.default.writeFileSync(outPath, dist, "utf-8");
54
71
  }
55
72
  /**
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readOrCreateVersion = readOrCreateVersion;
7
7
  exports.incrementVersion = incrementVersion;
8
+ exports.incrementVersionValue = incrementVersionValue;
8
9
  exports.writeVersion = writeVersion;
9
10
  exports.versionLogStatement = versionLogStatement;
10
11
  exports.extractVersionFromCode = extractVersionFromCode;
@@ -38,9 +39,21 @@ function readOrCreateVersion(settingDir) {
38
39
  function incrementVersion(settingDir) {
39
40
  const versionPath = path_1.default.join(settingDir, VERSION_FILE);
40
41
  const current = readOrCreateVersion(settingDir);
41
- const next = padVersion(parseInt(current, 10) + 1);
42
+ const next = incrementVersionValue(current);
42
43
  fs_1.default.writeFileSync(versionPath, next, "utf-8");
43
44
  }
45
+ /**
46
+ * 对给定版本号加1并补零
47
+ * @param version - 当前版本号字符串
48
+ * @returns 递增后的版本号字符串;若版本号非数字则返回初始版本
49
+ */
50
+ function incrementVersionValue(version) {
51
+ const num = parseInt(version, 10);
52
+ if (Number.isNaN(num)) {
53
+ return INITIAL_VERSION;
54
+ }
55
+ return padVersion(num + 1);
56
+ }
44
57
  /**
45
58
  * 写入版本号到版本文件
46
59
  * @param settingDir - setting目录路径
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kezh/my-custom-js-converter",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "自定义代码转换器",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -13,6 +13,7 @@
13
13
  },
14
14
  "scripts": {
15
15
  "build": "npx tsc --build",
16
+ "prepublishOnly": "npm run build",
16
17
  "test": "npm run build && node test/run_tests.js",
17
18
  "test:manual": "npm run build && node test/manual_review.js"
18
19
  },