@openfairygui/cli 0.3.0-alpha.2 → 0.3.0-alpha.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +126 -19
  2. package/package.json +4 -4
package/dist/cli.mjs CHANGED
@@ -821,7 +821,7 @@ var ExtensibleProperty = class extends Property {
821
821
  };
822
822
  //#endregion
823
823
  //#region ../core/src/constants.ts
824
- const VERSION = `v0.3.0-alpha.2`;
824
+ const VERSION = `v0.3.0-alpha.3`;
825
825
  /** Binary package file magic number: "FGUI" as uint32. */
826
826
  const FGUI_MAGIC = 1179080009;
827
827
  /** Null string index in the binary string table. */
@@ -20447,6 +20447,84 @@ function getXmlNode(value) {
20447
20447
  if (!node || typeof node !== "object" || Array.isArray(node)) return null;
20448
20448
  return node;
20449
20449
  }
20450
+ const COMPONENT_INT32_RULES = [
20451
+ [PROJECT_XML_PROTOCOL.componentRoot.attrs.size, 2],
20452
+ [PROJECT_XML_PROTOCOL.componentRoot.attrs.restrictSize, 4],
20453
+ [PROJECT_XML_PROTOCOL.componentRoot.attrs.margin, 4],
20454
+ [PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarMargin, 4],
20455
+ [PROJECT_XML_PROTOCOL.componentRoot.attrs.clipSoftness, 2],
20456
+ [PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetX, 1],
20457
+ [PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetY, 1]
20458
+ ];
20459
+ const DISPLAY_OBJECT_INT32_RULES = [
20460
+ [PROJECT_XML_PROTOCOL.list.attrs.xy, 2],
20461
+ [PROJECT_XML_PROTOCOL.list.attrs.size, 2],
20462
+ [PROJECT_XML_PROTOCOL.list.attrs.restrictSize, 4]
20463
+ ];
20464
+ const LIST_INT32_RULES = [
20465
+ [PROJECT_XML_PROTOCOL.list.attrs.margin, 4],
20466
+ [PROJECT_XML_PROTOCOL.list.attrs.scrollBarMargin, 4],
20467
+ [PROJECT_XML_PROTOCOL.list.attrs.clipSoftness, 2]
20468
+ ];
20469
+ function isProjectInt32(value) {
20470
+ const trimmed = value.trim();
20471
+ if (!/^[+-]?\d+$/.test(trimmed)) return false;
20472
+ const parsed = BigInt(trimmed);
20473
+ return parsed >= -2147483648n && parsed <= 2147483647n;
20474
+ }
20475
+ function hasInvalidProjectInt32Parts(value, partCount, allowSuffix = false) {
20476
+ const parts = String(value).split(",");
20477
+ if (allowSuffix ? parts.length < partCount : parts.length !== partCount) return true;
20478
+ return parts.slice(0, partCount).some((part) => !isProjectInt32(part));
20479
+ }
20480
+ function validateComponentXmlGeometry(ctx, comp, sourcePath, componentNode) {
20481
+ const addDiagnostics = (attrs, rules, path, nodeId) => {
20482
+ for (const [spec, partCount] of rules) {
20483
+ const value = readXmlAttr(attrs, spec);
20484
+ if (value === void 0 || !hasInvalidProjectInt32Parts(value, partCount)) continue;
20485
+ ctx.addDiagnostic({
20486
+ severity: "error",
20487
+ code: "desktop_incompatible_geometry",
20488
+ path: `${path}.${spec.canonical}`,
20489
+ message: `FairyGUI Desktop requires "${spec.canonical}" to contain ${partCount} signed 32-bit integer value(s); received ${JSON.stringify(String(value))}.`,
20490
+ resourceId: comp.getId(),
20491
+ ...nodeId ? { nodeId } : {},
20492
+ sourcePath
20493
+ });
20494
+ }
20495
+ };
20496
+ const componentPath = `components.${comp.getId()}`;
20497
+ addDiagnostics(componentNode, COMPONENT_INT32_RULES, `${componentPath}.component`);
20498
+ const displayList = getXmlNode(componentNode.displayList);
20499
+ if (!displayList) return;
20500
+ let nodeIndex = 0;
20501
+ for (const [tagName, definitions] of Object.entries(displayList)) for (const definition of ensureArray(definitions)) {
20502
+ const attrs = getXmlNode(definition);
20503
+ if (!attrs) continue;
20504
+ const nodeId = readXmlAttr(attrs, PROJECT_XML_PROTOCOL.displayObject.attrs.id);
20505
+ const nodePath = `${componentPath}.displayList.${nodeIndex++}`;
20506
+ addDiagnostics(attrs, DISPLAY_OBJECT_INT32_RULES, nodePath, nodeId);
20507
+ const normalizedTagName = tagName.toLowerCase();
20508
+ if (normalizedTagName === "list" || normalizedTagName === "tree") addDiagnostics(attrs, LIST_INT32_RULES, nodePath, nodeId);
20509
+ for (const gearTag of ["gearXY", "gearSize"]) for (const [gearIndex, gearDefinition] of ensureArray(attrs[gearTag]).entries()) {
20510
+ const gear = getXmlNode(gearDefinition);
20511
+ if (!gear) continue;
20512
+ for (const spec of [PROJECT_XML_PROTOCOL.gear.attrs.values, PROJECT_XML_PROTOCOL.gear.attrs.default]) {
20513
+ const value = readXmlAttr(gear, spec);
20514
+ if (value === void 0 || !String(value).split("|").some((segment) => segment.trim() !== "-" && hasInvalidProjectInt32Parts(segment, 2, true))) continue;
20515
+ ctx.addDiagnostic({
20516
+ severity: "error",
20517
+ code: "desktop_incompatible_geometry",
20518
+ path: `${nodePath}.${gearTag}.${gearIndex}.${spec.canonical}`,
20519
+ message: `FairyGUI Desktop requires each "${gearTag}.${spec.canonical}" segment to start with two signed 32-bit integers; received ${JSON.stringify(String(value))}.`,
20520
+ resourceId: comp.getId(),
20521
+ ...nodeId ? { nodeId } : {},
20522
+ sourcePath
20523
+ });
20524
+ }
20525
+ }
20526
+ }
20527
+ }
20450
20528
  function assignSetting(settings, key, value) {
20451
20529
  switch (key) {
20452
20530
  case "publish":
@@ -20569,7 +20647,9 @@ var ProjectReader = class {
20569
20647
  const compContent = await fs.readFile(compPath);
20570
20648
  if (diagnostics) {
20571
20649
  assertWellFormedXml(compContent);
20572
- if (!getXmlNode(parseXML(compContent).component)) throw new Error("Component XML must contain a component root element.");
20650
+ const componentNode = getXmlNode(parseXML(compContent).component);
20651
+ if (!componentNode) throw new Error("Component XML must contain a component root element.");
20652
+ validateComponentXmlGeometry(ctx, comp, compPath, componentNode);
20573
20653
  }
20574
20654
  readComponentXml(ctx, comp, compContent);
20575
20655
  } catch (err) {
@@ -21297,6 +21377,17 @@ function formatTrimmedFixed$1(value, precision = 2) {
21297
21377
  if (precision === 0) return value.toFixed(0);
21298
21378
  return value.toFixed(precision).replace(/(?:\.0+|(\.\d*?[1-9])0+)$/, "$1");
21299
21379
  }
21380
+ const INT32_MIN = -2147483648;
21381
+ const INT32_MAX = 2147483647;
21382
+ function formatProjectInt32(value, field = "project XML integer") {
21383
+ if (!Number.isFinite(value)) throw new Error(`${field} must be finite.`);
21384
+ const normalized = Math.trunc(value);
21385
+ if (normalized < INT32_MIN || normalized > INT32_MAX) throw new Error(`${field} must fit a signed 32-bit integer.`);
21386
+ return Object.is(normalized, -0) ? "0" : String(normalized);
21387
+ }
21388
+ function formatProjectInt32List(values, field) {
21389
+ return values.map((value) => formatProjectInt32(value, field)).join(",");
21390
+ }
21300
21391
  function formatDisplayAlpha(value) {
21301
21392
  return formatTrimmedFixed$1(value, 2);
21302
21393
  }
@@ -21354,7 +21445,7 @@ function normalizeGearSizeSegment(segment, fixedScale, omitIdentityScale) {
21354
21445
  if (!segment || segment === "-") return segment;
21355
21446
  const parts = segment.split(",");
21356
21447
  if (parts.length < 2) return segment;
21357
- const normalized = [String(Math.trunc(Number(parts[0] ?? 0))), String(Math.trunc(Number(parts[1] ?? 0)))];
21448
+ const normalized = [formatProjectInt32(Number(parts[0] ?? 0), "gearSize width"), formatProjectInt32(Number(parts[1] ?? 0), "gearSize height")];
21358
21449
  if (parts.length >= 4) {
21359
21450
  if (omitIdentityScale && isIdentityGearSizeScale(segment)) return normalized.join(",");
21360
21451
  const scaleFormatter = fixedScale ? (value) => {
@@ -21365,12 +21456,23 @@ function normalizeGearSizeSegment(segment, fixedScale, omitIdentityScale) {
21365
21456
  }
21366
21457
  return normalized.join(",");
21367
21458
  }
21459
+ function normalizeGearXYSegment(segment) {
21460
+ if (!segment || segment === "-") return segment;
21461
+ const parts = segment.split(",");
21462
+ if (parts.length < 2) return segment;
21463
+ return [
21464
+ formatProjectInt32(Number(parts[0] ?? 0), "gearXY x"),
21465
+ formatProjectInt32(Number(parts[1] ?? 0), "gearXY y"),
21466
+ ...parts.slice(2)
21467
+ ].join(",");
21468
+ }
21368
21469
  function shouldCompactTextGearColor(ownerType, ownerName) {
21369
21470
  return (ownerType === "GTextField" || ownerType === "GRichTextField" || ownerType === "GTextInput") && ownerName === "title";
21370
21471
  }
21371
21472
  function normalizeGearXmlValue(gearType, value, ownerType, ownerName, gear) {
21372
21473
  const raw = String(value ?? "");
21373
21474
  switch (gearType) {
21475
+ case GearType.XY: return raw.split("|").map((segment) => normalizeGearXYSegment(segment)).join("|");
21374
21476
  case GearType.Size: {
21375
21477
  const fixedScale = !gear?.getTween();
21376
21478
  const segments = raw.split("|");
@@ -21390,10 +21492,10 @@ function normalizeGearXmlValue(gearType, value, ownerType, ownerName, gear) {
21390
21492
  }
21391
21493
  function writeCommonDisplayState(target, object, protocol) {
21392
21494
  const specs = protocol.attrs;
21393
- if (specs.xy) writeXmlAttr(target, specs.xy, `${object.getX?.() ?? 0},${object.getY?.() ?? 0}`);
21495
+ if (specs.xy) writeXmlAttr(target, specs.xy, formatProjectInt32List([object.getX?.() ?? 0, object.getY?.() ?? 0], "display object xy"));
21394
21496
  const width = object.getWidth?.() ?? 0;
21395
21497
  const height = object.getHeight?.() ?? 0;
21396
- if (specs.size && (width !== 0 || height !== 0)) writeXmlAttr(target, specs.size, `${width},${height}`);
21498
+ if (specs.size && (width !== 0 || height !== 0)) writeXmlAttr(target, specs.size, formatProjectInt32List([width, height], "display object size"));
21397
21499
  if (specs.locked && object.getLocked?.()) writeXmlAttr(target, specs.locked, "true");
21398
21500
  const restrictSize = [
21399
21501
  object.getMinWidth?.() ?? 0,
@@ -21401,7 +21503,7 @@ function writeCommonDisplayState(target, object, protocol) {
21401
21503
  object.getMinHeight?.() ?? 0,
21402
21504
  object.getMaxHeight?.() ?? 0
21403
21505
  ];
21404
- if (specs.restrictSize && restrictSize.some((value) => value !== 0)) writeXmlAttr(target, specs.restrictSize, restrictSize.join(","));
21506
+ if (specs.restrictSize && restrictSize.some((value) => value !== 0)) writeXmlAttr(target, specs.restrictSize, formatProjectInt32List(restrictSize, "display object restrictSize"));
21405
21507
  if (specs.aspect && object.getAspect?.()) writeXmlAttr(target, specs.aspect, "true");
21406
21508
  const pivotX = object.getPivotX?.() ?? 0;
21407
21509
  const pivotY = object.getPivotY?.() ?? 0;
@@ -21431,8 +21533,13 @@ function writeCommonDisplayState(target, object, protocol) {
21431
21533
  function hasNonZeroInsets(value) {
21432
21534
  return !!value && !!(value.top || value.bottom || value.left || value.right);
21433
21535
  }
21434
- function formatInsets(value) {
21435
- return `${value.top ?? 0},${value.bottom ?? 0},${value.left ?? 0},${value.right ?? 0}`;
21536
+ function formatInsets(value, field = "margin") {
21537
+ return formatProjectInt32List([
21538
+ value.top ?? 0,
21539
+ value.bottom ?? 0,
21540
+ value.left ?? 0,
21541
+ value.right ?? 0
21542
+ ], field);
21436
21543
  }
21437
21544
  function formatFillMethod(fillMethod) {
21438
21545
  return {
@@ -21950,7 +22057,7 @@ function serializeChild(obj) {
21950
22057
  const scrollBarFlags = typedObj.getScrollBarFlags?.() ?? 0;
21951
22058
  if (scrollBarFlags !== 0) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarFlags, String(scrollBarFlags));
21952
22059
  const scrollBarMargin = typedObj.getScrollBarMargin?.();
21953
- if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarMargin, formatInsets(scrollBarMargin));
22060
+ if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarMargin, formatInsets(scrollBarMargin, "list scrollBarMargin"));
21954
22061
  const vtScrollBarRes = typedObj.getVtScrollBarRes?.() ?? "";
21955
22062
  const hzScrollBarRes = typedObj.getHzScrollBarRes?.() ?? "";
21956
22063
  if (vtScrollBarRes || hzScrollBarRes) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarRes, `${vtScrollBarRes},${hzScrollBarRes}`);
@@ -21958,9 +22065,9 @@ function serializeChild(obj) {
21958
22065
  const footerRes = typedObj.getFooterRes?.() ?? "";
21959
22066
  if (headerRes || footerRes) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.ptrRes, `${headerRes},${footerRes}`);
21960
22067
  const margin = typedObj.getMargin?.();
21961
- if (hasNonZeroInsets(margin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.margin, formatInsets(margin));
22068
+ if (hasNonZeroInsets(margin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.margin, formatInsets(margin, "list margin"));
21962
22069
  const clipSoftness = typedObj.getClipSoftness?.();
21963
- if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.clipSoftness, `${clipSoftness.x ?? 0},${clipSoftness.y ?? 0}`);
22070
+ if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.clipSoftness, formatProjectInt32List([clipSoftness.x ?? 0, clipSoftness.y ?? 0], "list clipSoftness"));
21964
22071
  if (typedObj.getScrollItemToViewOnClick?.() === false) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollItemToViewOnClick, "false");
21965
22072
  if (typedObj.getFoldInvisibleItems?.() === true) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.foldInvisibleItems, "true");
21966
22073
  if (typedObj.getAutoClearItems?.() === true) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.autoClearItems, "true");
@@ -22202,7 +22309,7 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
22202
22309
  await fs.mkdir(fs.dirname(targetPath));
22203
22310
  const compAttrs = {};
22204
22311
  const [w, h] = [typedComp.getWidth?.() ?? 0, typedComp.getHeight?.() ?? 0];
22205
- if (w || h) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.size, `${w},${h}`);
22312
+ if (w || h) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.size, formatProjectInt32List([w, h], "component size"));
22206
22313
  const [pivotX, pivotY] = [typedComp.getPivotX?.() ?? 0, typedComp.getPivotY?.() ?? 0];
22207
22314
  if (pivotX !== 0 || pivotY !== 0) {
22208
22315
  writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.pivot, `${pivotX},${pivotY}`);
@@ -22215,14 +22322,14 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
22215
22322
  2: "scroll"
22216
22323
  }[overflow] ?? "visible");
22217
22324
  const margin = typedComp.getMargin?.();
22218
- if (hasNonZeroInsets(margin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.margin, formatInsets(margin));
22325
+ if (hasNonZeroInsets(margin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.margin, formatInsets(margin, "component margin"));
22219
22326
  const restrictSize = [
22220
22327
  typedComp.getMinWidth?.() ?? 0,
22221
22328
  typedComp.getMaxWidth?.() ?? 0,
22222
22329
  typedComp.getMinHeight?.() ?? 0,
22223
22330
  typedComp.getMaxHeight?.() ?? 0
22224
22331
  ];
22225
- if (restrictSize.some((value) => value !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.restrictSize, restrictSize.join(","));
22332
+ if (restrictSize.some((value) => value !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.restrictSize, formatProjectInt32List(restrictSize, "component restrictSize"));
22226
22333
  if (typedComp.getBgColorEnabled?.()) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.bgColorEnabled, "true");
22227
22334
  const bgColor = typedComp.getBgColor?.();
22228
22335
  if (bgColor) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.bgColor, bgColor);
@@ -22231,9 +22338,9 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
22231
22338
  const designImageLayer = typedComp.getDesignImageLayer?.() ?? 0;
22232
22339
  if (designImageLayer !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageLayer, String(designImageLayer));
22233
22340
  const designImageOffsetX = typedComp.getDesignImageOffsetX?.() ?? 0;
22234
- if (designImageOffsetX !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetX, String(designImageOffsetX));
22341
+ if (designImageOffsetX !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetX, formatProjectInt32(designImageOffsetX, "designImageOffsetX"));
22235
22342
  const designImageOffsetY = typedComp.getDesignImageOffsetY?.() ?? 0;
22236
- if (designImageOffsetY !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetY, String(designImageOffsetY));
22343
+ if (designImageOffsetY !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetY, formatProjectInt32(designImageOffsetY, "designImageOffsetY"));
22237
22344
  const idNum = typedComp.getIdNum?.() ?? 0;
22238
22345
  if (idNum !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.idnum, String(idNum));
22239
22346
  const initName = typedComp.getInitName?.();
@@ -22241,7 +22348,7 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
22241
22348
  const remark = typedComp.getRemark?.();
22242
22349
  if (remark) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.remark, remark);
22243
22350
  const clipSoftness = typedComp.getClipSoftness?.();
22244
- if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.clipSoftness, `${clipSoftness.x ?? 0},${clipSoftness.y ?? 0}`);
22351
+ if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.clipSoftness, formatProjectInt32List([clipSoftness.x ?? 0, clipSoftness.y ?? 0], "component clipSoftness"));
22245
22352
  if (typedComp.getOpaque?.() === false) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.opaque, "false");
22246
22353
  const mask = typedComp.getMask?.();
22247
22354
  if (mask) {
@@ -22271,7 +22378,7 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
22271
22378
  const scrollBarFlags = typedComp.getScrollBarFlags?.() ?? 0;
22272
22379
  if (scrollBarFlags !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarFlags, String(scrollBarFlags));
22273
22380
  const scrollBarMargin = typedComp.getScrollBarMargin?.();
22274
- if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarMargin, formatInsets(scrollBarMargin));
22381
+ if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarMargin, formatInsets(scrollBarMargin, "component scrollBarMargin"));
22275
22382
  const vtScrollBarRes = typedComp.getVtScrollBarRes?.() ?? "";
22276
22383
  const hzScrollBarRes = typedComp.getHzScrollBarRes?.() ?? "";
22277
22384
  if (vtScrollBarRes || hzScrollBarRes) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarRes, `${vtScrollBarRes},${hzScrollBarRes}`);
@@ -31403,7 +31510,7 @@ function registerValidateCommand(program) {
31403
31510
  //#region src/utils/package-version.ts
31404
31511
  const require$1 = createRequire(import.meta.url);
31405
31512
  function getInjectedPackageVersion() {
31406
- const version = "0.3.0-alpha.2";
31513
+ const version = "0.3.0-alpha.3";
31407
31514
  return typeof version === "string" && true ? version : null;
31408
31515
  }
31409
31516
  function readPackageVersion() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfairygui/cli",
3
- "version": "0.3.0-alpha.2",
3
+ "version": "0.3.0-alpha.3",
4
4
  "description": "FairyGUI Headless Authoring SDK — command-line interface.",
5
5
  "author": "OpenFairyGUI Contributors",
6
6
  "license": "MIT",
@@ -33,13 +33,13 @@
33
33
  "restore"
34
34
  ],
35
35
  "devDependencies": {
36
- "@openfairygui/functions": "0.3.0-alpha.2",
37
- "@openfairygui/core": "0.3.0-alpha.2"
36
+ "@openfairygui/functions": "0.3.0-alpha.3",
37
+ "@openfairygui/core": "0.3.0-alpha.3"
38
38
  },
39
39
  "dependencies": {
40
40
  "commander": "^14.0.2",
41
41
  "jiti": "^2.7.0",
42
- "@openfairygui/backend": "0.3.0-alpha.2"
42
+ "@openfairygui/backend": "0.3.0-alpha.3"
43
43
  },
44
44
  "optionalDependencies": {
45
45
  "sharp": ">=0.33.0"