@nick848/sf-cli 1.0.1 → 1.0.2

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.
package/dist/index.js CHANGED
@@ -12,7 +12,6 @@ var chalk9 = require('chalk');
12
12
  var uuid = require('uuid');
13
13
  var enquirer = require('enquirer');
14
14
  var child_process = require('child_process');
15
- var module$1 = require('module');
16
15
 
17
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
17
 
@@ -41,9 +40,7 @@ var crypto__namespace = /*#__PURE__*/_interopNamespace(crypto);
41
40
  var os__namespace = /*#__PURE__*/_interopNamespace(os);
42
41
  var chalk9__default = /*#__PURE__*/_interopDefault(chalk9);
43
42
 
44
- // node_modules/tsup/assets/cjs_shims.js
45
- var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
46
- var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
43
+ // src/services/config.ts
47
44
  var DEFAULT_CONFIG = {
48
45
  model: "GLM-5",
49
46
  apiKey: "",
@@ -377,7 +374,7 @@ var BaseAdapter = class {
377
374
  * 延迟工具函数
378
375
  */
379
376
  delay(ms) {
380
- return new Promise((resolve2) => setTimeout(resolve2, ms));
377
+ return new Promise((resolve4) => setTimeout(resolve4, ms));
381
378
  }
382
379
  };
383
380
 
@@ -1822,17 +1819,17 @@ var FigmaMCPAdapter = class extends MCPAdapterBase {
1822
1819
  * 解析设计规格
1823
1820
  */
1824
1821
  parseDesignSpec(data, url, fileKey, nodeId) {
1825
- const document2 = data.document || data;
1822
+ const document = data.document || data;
1826
1823
  return {
1827
1824
  id: nodeId || fileKey,
1828
- name: document2.name || "\u672A\u547D\u540D\u8BBE\u8BA1\u7A3F",
1825
+ name: document.name || "\u672A\u547D\u540D\u8BBE\u8BA1\u7A3F",
1829
1826
  platform: "figma",
1830
1827
  url,
1831
- width: document2.absoluteBoundingBox?.width || 0,
1832
- height: document2.absoluteBoundingBox?.height || 0,
1828
+ width: document.absoluteBoundingBox?.width || 0,
1829
+ height: document.absoluteBoundingBox?.height || 0,
1833
1830
  scale: 1,
1834
- layers: this.parseFigmaLayers(document2.children || []),
1835
- styles: this.extractStylesFromDocument(document2),
1831
+ layers: this.parseFigmaLayers(document.children || []),
1832
+ styles: this.extractStylesFromDocument(document),
1836
1833
  assets: this.parseAssets(data.assets || []),
1837
1834
  extractedAt: /* @__PURE__ */ new Date()
1838
1835
  };
@@ -1928,7 +1925,7 @@ var FigmaMCPAdapter = class extends MCPAdapterBase {
1928
1925
  /**
1929
1926
  * 从文档提取全局样式
1930
1927
  */
1931
- extractStylesFromDocument(document2) {
1928
+ extractStylesFromDocument(document) {
1932
1929
  const styles = {
1933
1930
  colors: [],
1934
1931
  typography: [],
@@ -1954,7 +1951,7 @@ var FigmaMCPAdapter = class extends MCPAdapterBase {
1954
1951
  node.children.forEach(traverse);
1955
1952
  }
1956
1953
  };
1957
- traverse(document2);
1954
+ traverse(document);
1958
1955
  styles.colors = this.deduplicateColors(styles.colors);
1959
1956
  styles.typography = this.deduplicateTypography(styles.typography);
1960
1957
  return styles;
@@ -5621,8 +5618,8 @@ var CommandParser = class {
5621
5618
  };
5622
5619
  }
5623
5620
  parseAtPath(input) {
5624
- const path11 = input.slice(1).trim();
5625
- if (!path11) {
5621
+ const path13 = input.slice(1).trim();
5622
+ if (!path13) {
5626
5623
  return { success: false, error: "\u7F3A\u5C11\u6587\u4EF6\u8DEF\u5F84" };
5627
5624
  }
5628
5625
  return {
@@ -5630,7 +5627,7 @@ var CommandParser = class {
5630
5627
  command: {
5631
5628
  type: "at" /* AT */,
5632
5629
  raw: input,
5633
- path: path11
5630
+ path: path13
5634
5631
  }
5635
5632
  };
5636
5633
  }
@@ -6474,8 +6471,10 @@ function createSpinner(message) {
6474
6471
  stop: () => process.stdout.write(" ".repeat(message.length + 10) + "\r")
6475
6472
  };
6476
6473
  }
6477
- var CURRENT_VERSION = "1.0.0";
6478
- var PACKAGE_NAME = "sf-cli";
6474
+ var packageJsonPath = path4__namespace.resolve(__dirname, "../../package.json");
6475
+ var packageJson = JSON.parse(fsSync__namespace.readFileSync(packageJsonPath, "utf-8"));
6476
+ var CURRENT_VERSION = packageJson.version;
6477
+ var PACKAGE_NAME = packageJson.name;
6479
6478
  async function handleUpdate(args, ctx) {
6480
6479
  const options = {
6481
6480
  check: args.includes("--check") || args.includes("-c"),
@@ -6502,6 +6501,9 @@ async function checkForUpdates() {
6502
6501
  const latestVersion = await getLatestVersion();
6503
6502
  if (!latestVersion) {
6504
6503
  lines.push(chalk9__default.default.yellow("\u65E0\u6CD5\u83B7\u53D6\u6700\u65B0\u7248\u672C\u4FE1\u606F"));
6504
+ lines.push(chalk9__default.default.gray("\u53EF\u80FD\u539F\u56E0:"));
6505
+ lines.push(chalk9__default.default.gray(" 1. \u5305\u5C1A\u672A\u53D1\u5E03\u5230 npm"));
6506
+ lines.push(chalk9__default.default.gray(" 2. \u7F51\u7EDC\u8FDE\u63A5\u95EE\u9898"));
6505
6507
  return { output: lines.join("\n") };
6506
6508
  }
6507
6509
  lines.push(chalk9__default.default.gray(` \u5F53\u524D\u7248\u672C: v${CURRENT_VERSION}`));
@@ -6520,43 +6522,70 @@ async function checkForUpdates() {
6520
6522
  async function performUpdate(targetVersion) {
6521
6523
  const lines = [];
6522
6524
  lines.push(chalk9__default.default.cyan("\u6B63\u5728\u66F4\u65B0 sf-cli..."));
6525
+ lines.push(chalk9__default.default.gray(` \u5305\u540D: ${PACKAGE_NAME}`));
6526
+ lines.push(chalk9__default.default.gray(` \u5F53\u524D\u7248\u672C: v${CURRENT_VERSION}`));
6523
6527
  try {
6524
6528
  const latestVersion = await getLatestVersion();
6529
+ if (!latestVersion && !targetVersion) {
6530
+ lines.push(chalk9__default.default.yellow("\n\u26A0 \u65E0\u6CD5\u83B7\u53D6\u6700\u65B0\u7248\u672C\u4FE1\u606F"));
6531
+ lines.push(chalk9__default.default.gray("\n\u53EF\u80FD\u539F\u56E0:"));
6532
+ lines.push(chalk9__default.default.gray(" 1. \u5305\u5C1A\u672A\u53D1\u5E03\u5230 npm"));
6533
+ lines.push(chalk9__default.default.gray(" 2. \u7F51\u7EDC\u8FDE\u63A5\u95EE\u9898"));
6534
+ lines.push(chalk9__default.default.gray("\n\u60A8\u53EF\u4EE5\u5C1D\u8BD5\u624B\u52A8\u66F4\u65B0:"));
6535
+ lines.push(chalk9__default.default.cyan(` npm install -g ${PACKAGE_NAME}@latest`));
6536
+ return { output: lines.join("\n") };
6537
+ }
6525
6538
  if (latestVersion === CURRENT_VERSION && !targetVersion) {
6526
- lines.push(chalk9__default.default.green("\u2713 \u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF0C\u65E0\u9700\u66F4\u65B0"));
6539
+ lines.push(chalk9__default.default.green("\n\u2713 \u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF0C\u65E0\u9700\u66F4\u65B0"));
6527
6540
  return { output: lines.join("\n") };
6528
6541
  }
6529
6542
  const packageSpec = targetVersion ? `${PACKAGE_NAME}@${targetVersion}` : `${PACKAGE_NAME}@latest`;
6530
6543
  lines.push(chalk9__default.default.gray(` \u5B89\u88C5: ${packageSpec}`));
6531
- await new Promise((resolve2, reject) => {
6544
+ const installResult = await new Promise((resolve4) => {
6532
6545
  const proc = child_process.spawn("npm", ["install", "-g", packageSpec], {
6533
6546
  stdio: "pipe",
6534
6547
  shell: true
6535
6548
  });
6549
+ let output = "";
6550
+ proc.stdout?.on("data", (data) => {
6551
+ output += data.toString();
6552
+ });
6553
+ proc.stderr?.on("data", (data) => {
6554
+ output += data.toString();
6555
+ });
6536
6556
  proc.on("close", (code) => {
6537
- if (code === 0) {
6538
- resolve2();
6539
- } else {
6540
- reject(new Error(`npm install exited with code ${code}`));
6541
- }
6557
+ resolve4({
6558
+ success: code === 0,
6559
+ output
6560
+ });
6542
6561
  });
6543
6562
  proc.on("error", (err) => {
6544
- reject(err);
6563
+ resolve4({
6564
+ success: false,
6565
+ output: err.message
6566
+ });
6545
6567
  });
6546
6568
  });
6547
- lines.push(chalk9__default.default.green("\u2713 \u66F4\u65B0\u5B8C\u6210!"));
6569
+ if (!installResult.success) {
6570
+ lines.push(chalk9__default.default.red("\n\u2717 \u66F4\u65B0\u5931\u8D25"));
6571
+ lines.push(chalk9__default.default.gray(installResult.output));
6572
+ lines.push(chalk9__default.default.gray("\n\u60A8\u53EF\u4EE5\u5C1D\u8BD5\u624B\u52A8\u66F4\u65B0:"));
6573
+ lines.push(chalk9__default.default.cyan(` npm install -g ${PACKAGE_NAME}@latest`));
6574
+ return { output: lines.join("\n") };
6575
+ }
6576
+ lines.push(chalk9__default.default.green("\n\u2713 \u66F4\u65B0\u5B8C\u6210!"));
6548
6577
  lines.push(chalk9__default.default.gray(` \u65B0\u7248\u672C: v${targetVersion || latestVersion}`));
6549
6578
  lines.push(chalk9__default.default.gray("\n\u8BF7\u91CD\u542F CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"));
6550
6579
  } catch (error) {
6551
6580
  lines.push(chalk9__default.default.red("\u66F4\u65B0\u5931\u8D25: " + error.message));
6552
6581
  lines.push(chalk9__default.default.gray("\n\u60A8\u53EF\u4EE5\u5C1D\u8BD5\u624B\u52A8\u66F4\u65B0:"));
6553
- lines.push(chalk9__default.default.gray(" npm install -g sf-cli@latest"));
6582
+ lines.push(chalk9__default.default.cyan(` npm install -g ${PACKAGE_NAME}@latest`));
6554
6583
  }
6555
6584
  return { output: lines.join("\n") };
6556
6585
  }
6557
6586
  async function getLatestVersion() {
6558
6587
  try {
6559
- const result = await new Promise((resolve2, reject) => {
6588
+ const result = await new Promise((resolve4, reject) => {
6560
6589
  const proc = child_process.spawn("npm", ["view", PACKAGE_NAME, "version"], {
6561
6590
  stdio: "pipe",
6562
6591
  shell: true
@@ -6566,13 +6595,17 @@ async function getLatestVersion() {
6566
6595
  output += data.toString();
6567
6596
  });
6568
6597
  proc.on("close", (code) => {
6569
- if (code === 0) {
6570
- resolve2(output.trim());
6598
+ if (code === 0 && output.trim()) {
6599
+ resolve4(output.trim());
6571
6600
  } else {
6572
6601
  reject(new Error("Failed to get version"));
6573
6602
  }
6574
6603
  });
6575
6604
  proc.on("error", reject);
6605
+ setTimeout(() => {
6606
+ proc.kill();
6607
+ reject(new Error("Timeout"));
6608
+ }, 1e4);
6576
6609
  });
6577
6610
  return result || null;
6578
6611
  } catch {
@@ -7254,9 +7287,11 @@ ${generateConfirmationPrompt(e.point)}`) + chalk9__default.default.cyan(`
7254
7287
  throw e;
7255
7288
  }
7256
7289
  }
7257
- var require2 = module$1.createRequire(importMetaUrl);
7258
- var packageJson = require2("../../package.json");
7259
- var VERSION2 = packageJson.version;
7290
+
7291
+ // src/commands/runner.ts
7292
+ var packageJsonPath2 = path4__namespace.resolve(__dirname, "../../package.json");
7293
+ var packageJson2 = JSON.parse(fsSync__namespace.readFileSync(packageJsonPath2, "utf-8"));
7294
+ var VERSION2 = packageJson2.version;
7260
7295
  async function runSlashCommand(command, args, ctx) {
7261
7296
  const normalizedCommand = normalizeCommand(command);
7262
7297
  switch (normalizedCommand) {
@@ -7351,7 +7386,7 @@ async function executeShell(command, ctx) {
7351
7386
  \u547D\u4EE4 "${command}" \u53EF\u80FD\u4F1A\u5220\u9664\u91CD\u8981\u6587\u4EF6`) + chalk9__default.default.gray("\n\u4F7F\u7528 yolo \u6A21\u5F0F\u5F3A\u5236\u6267\u884C")
7352
7387
  };
7353
7388
  }
7354
- return new Promise((resolve2) => {
7389
+ return new Promise((resolve4) => {
7355
7390
  const shell = child_process.spawn(command, [], {
7356
7391
  shell: true,
7357
7392
  cwd: ctx.options.workingDirectory
@@ -7376,11 +7411,11 @@ async function executeShell(command, ctx) {
7376
7411
  output += chalk9__default.default.red(`
7377
7412
  \u9000\u51FA\u7801: ${code}`);
7378
7413
  }
7379
- resolve2({ output: output || chalk9__default.default.gray("(\u65E0\u8F93\u51FA)") });
7414
+ resolve4({ output: output || chalk9__default.default.gray("(\u65E0\u8F93\u51FA)") });
7380
7415
  });
7381
7416
  setTimeout(() => {
7382
7417
  shell.kill();
7383
- resolve2({
7418
+ resolve4({
7384
7419
  output: chalk9__default.default.yellow("\u547D\u4EE4\u6267\u884C\u8D85\u65F6\uFF0C\u5DF2\u7EC8\u6B62")
7385
7420
  });
7386
7421
  }, 6e4);