@neocompose/cli 0.6.0 → 0.6.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 (2) hide show
  1. package/dist/neo.mjs +74 -35
  2. package/package.json +1 -1
package/dist/neo.mjs CHANGED
@@ -28256,29 +28256,38 @@ function genericConstraint(context, type) {
28256
28256
  };
28257
28257
  }
28258
28258
  function inheritedMemberId(context, ownerClass, name) {
28259
- const baseType = ownerClass.baseTypes.find(
28259
+ const directBase = ownerClass.baseTypes.find(
28260
28260
  (entry) => context.classIdsByName.has(entry.name)
28261
28261
  );
28262
- if (!baseType) return null;
28263
- const baseClass = context.baseClasses.get(
28264
- requiredName(context.classIdsByName, baseType.name, "class")
28265
- );
28266
- if (baseClass !== void 0) return baseClass.schema[name] ?? null;
28267
- const baseClassId = requiredName(
28268
- context.classIdsByName,
28269
- baseType.name,
28270
- "class"
28271
- );
28272
- const sourceBase = context.sourceClasses.get(baseClassId);
28273
- if (sourceBase === void 0) return null;
28274
- const sourceMember = sourceBase.members.find(
28275
- (member) => member.name === name
28276
- );
28277
- return sourceMember === void 0 ? null : materializedId(
28278
- sourceMember,
28279
- "member",
28280
- `${sourceBase.name}.${sourceMember.name}`
28281
- );
28262
+ let classId = directBase ? requiredName(context.classIdsByName, directBase.name, "class") : null;
28263
+ const visited = /* @__PURE__ */ new Set();
28264
+ while (classId !== null && !visited.has(classId)) {
28265
+ visited.add(classId);
28266
+ const sourceClass = context.sourceClasses.get(classId);
28267
+ if (sourceClass !== void 0) {
28268
+ const sourceMember = sourceClass.members.find(
28269
+ (member) => member.name === name
28270
+ );
28271
+ if (sourceMember !== void 0) {
28272
+ return materializedId(
28273
+ sourceMember,
28274
+ "member",
28275
+ `${sourceClass.name}.${sourceMember.name}`
28276
+ );
28277
+ }
28278
+ const sourceBase = sourceClass.baseTypes.find(
28279
+ (entry) => context.classIdsByName.has(entry.name)
28280
+ );
28281
+ classId = sourceBase ? requiredName(context.classIdsByName, sourceBase.name, "class") : null;
28282
+ continue;
28283
+ }
28284
+ const pulledClass = context.baseClasses.get(classId);
28285
+ if (pulledClass === void 0) return null;
28286
+ const memberId = pulledClass.schema[name];
28287
+ if (memberId !== void 0) return memberId;
28288
+ classId = pulledClass.extendsClassId;
28289
+ }
28290
+ return null;
28282
28291
  }
28283
28292
  function resolveQualifiedMemberId(context, expression) {
28284
28293
  const match = /^([A-Za-z_][A-Za-z0-9_]*)\.([A-Za-z_][A-Za-z0-9_]*)$/.exec(
@@ -39728,6 +39737,7 @@ function lowerMemberDefaultSourcesV4(state, analysis, manifest) {
39728
39737
  if (record3.recordKind === "value") pulledValueIds.add(record3.recordId);
39729
39738
  }
39730
39739
  const memberDefaultValues = /* @__PURE__ */ new Map();
39740
+ const seeds = /* @__PURE__ */ new Map();
39731
39741
  for (const sourceClass of analysis.schema.classes) {
39732
39742
  for (const declaration of sourceClass.members) {
39733
39743
  if (declaration.kind !== "field" || declaration.initializer === null) {
@@ -39736,13 +39746,6 @@ function lowerMemberDefaultSourcesV4(state, analysis, manifest) {
39736
39746
  if (declaration.modifiers.includes("static")) continue;
39737
39747
  const label = `${sourceClass.name}.${declaration.name}`;
39738
39748
  const memberId = sourceIdentityId(declaration, "member", label);
39739
- const baseData3 = stateData(context, "member", memberId);
39740
- if (baseData3 === null) continue;
39741
- const backed = rowBackedDefaultBody(
39742
- baseData3,
39743
- (id2) => pulledValueIds.has(id2)
39744
- );
39745
- if (backed === null) continue;
39746
39749
  const member = context.members.get(memberId);
39747
39750
  if (member === void 0) continue;
39748
39751
  const binding = {
@@ -39751,17 +39754,52 @@ function lowerMemberDefaultSourcesV4(state, analysis, manifest) {
39751
39754
  source: declaration.source,
39752
39755
  label
39753
39756
  };
39754
- memberDefaultValues.set(
39755
- memberId,
39756
- lowerRowBackedDefault(context, member, backed, baseData3, binding)
39757
+ const baseData3 = stateData(context, "member", memberId);
39758
+ const backed = baseData3 === null ? null : rowBackedDefaultBody(baseData3, (id2) => pulledValueIds.has(id2));
39759
+ if (backed !== null && baseData3 !== null) {
39760
+ memberDefaultValues.set(
39761
+ memberId,
39762
+ lowerRowBackedDefault(context, member, backed, baseData3, binding)
39763
+ );
39764
+ continue;
39765
+ }
39766
+ const expression = parseCachedInitializer(
39767
+ context.parsedInitializers,
39768
+ declaration.initializer
39769
+ );
39770
+ if (!defaultRequiresOwnedRows(member, expression)) continue;
39771
+ const rootValueId = pendingValueId(binding, `${label}.default`);
39772
+ const seed = lowerStaticSeed(
39773
+ context,
39774
+ member,
39775
+ expression,
39776
+ binding,
39777
+ rootValueId
39757
39778
  );
39779
+ seeds.set(memberId, { ...seed, valueId: rootValueId });
39780
+ memberDefaultValues.set(memberId, {
39781
+ value: seed.value,
39782
+ classId: seed.classId
39783
+ });
39758
39784
  }
39759
39785
  }
39760
39786
  return {
39761
39787
  records: [...context.reconstructed.values()],
39762
- memberDefaultValues
39788
+ memberDefaultValues,
39789
+ seeds
39763
39790
  };
39764
39791
  }
39792
+ function defaultRequiresOwnedRows(member, sourceExpression) {
39793
+ const expression = annotatedValue(sourceExpression).expression;
39794
+ if (member.kind === "class") return expression.kind === "new";
39795
+ if (member.kind === "list") {
39796
+ return expression.kind === "litList" && expression.elements.length > 0;
39797
+ }
39798
+ if (member.kind === "dictionary") {
39799
+ return expression.kind === "litDict" && expression.entries.length > 0;
39800
+ }
39801
+ return false;
39802
+ }
39765
39803
  function lowerRowBackedDefault(context, member, backed, baseData3, binding) {
39766
39804
  const baseDefault = isObjectRecord2(baseData3.defaultValue) ? baseData3.defaultValue : {};
39767
39805
  const storedClassId = stringOrNull(baseDefault.classId);
@@ -43737,7 +43775,8 @@ function computeWorkspaceStatus(workspace, options = {}) {
43737
43775
  let staticMemberValueIds = /* @__PURE__ */ new Map();
43738
43776
  let memberDefaults = {
43739
43777
  records: [],
43740
- memberDefaultValues: /* @__PURE__ */ new Map()
43778
+ memberDefaultValues: /* @__PURE__ */ new Map(),
43779
+ seeds: /* @__PURE__ */ new Map()
43741
43780
  };
43742
43781
  let projectAnalysisV4 = null;
43743
43782
  try {
@@ -43887,7 +43926,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
43887
43926
  projectAnalysisV4,
43888
43927
  manifest
43889
43928
  );
43890
- staticValueSeeds = staticValues.seeds;
43929
+ staticValueSeeds = new Map([...staticValues.seeds, ...memberDefaults.seeds]);
43891
43930
  staticMemberValueIds = staticValues.memberValueIds;
43892
43931
  const rootRecords = lowerProjectRootSourceV4(
43893
43932
  workspace.state.records,
@@ -61778,7 +61817,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
61778
61817
  }
61779
61818
  if (status.staticValueSeeds.size > 0) {
61780
61819
  console.log(
61781
- ` ${color.dim(`create ${status.staticValueSeeds.size} static value seed(s)`)}`
61820
+ ` ${color.dim(`create ${status.staticValueSeeds.size} member value seed(s)`)}`
61782
61821
  );
61783
61822
  }
61784
61823
  if (options.dryRun) return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",