@happyvertical/smrt-core 0.57.15 → 0.57.17

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.
@@ -72,6 +72,15 @@ export declare class ManifestGenerator {
72
72
  * a local class named like its imported parent never resolves to itself.
73
73
  */
74
74
  private resolveParentDefinition;
75
+ /**
76
+ * `obj`'s parent among `objectsByName` (keyed by class name), without
77
+ * loading dependency manifests. An import-qualified parent only matches a
78
+ * definition of that package, never a same-named class of another one
79
+ * (#4176); a definition carrying no package identity still matches by name.
80
+ * `manifest` is the one `objectsByName` was built from, where a qualified
81
+ * parent that lost its class-name slot is still found.
82
+ */
83
+ private namedParent;
75
84
  /**
76
85
  * Stamp `importPath` (via {@link determineImportPath}) on every object
77
86
  * that does not already have one. Safe to call unconditionally: objects
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-generator.d.ts","sourceRoot":"","sources":["../../src/scanner/manifest-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest-generator.d.ts","sourceRoot":"","sources":["../../src/scanner/manifest-generator.ts"],"names":[],"mappings":"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"}
@@ -236,7 +236,7 @@ var ManifestGenerator = class {
236
236
  const objectsByName = new Map(Object.values(manifest.objects).map((objectDef) => [objectDef.className, objectDef]));
237
237
  for (const objectDef of Object.values(manifest.objects)) {
238
238
  const config = objectDef.decoratorConfig;
239
- const isCollection = objectDef.extends === "SmrtCollection" || this.extendsCollection(objectDef, objectsByName);
239
+ const isCollection = objectDef.extends === "SmrtCollection" || this.extendsCollection(objectDef, objectsByName, manifest);
240
240
  let collectionItem;
241
241
  if (isCollection) {
242
242
  const seenParents = /* @__PURE__ */ new Set();
@@ -333,6 +333,26 @@ var ManifestGenerator = class {
333
333
  return parent === child ? void 0 : parent;
334
334
  }
335
335
  /**
336
+ * `obj`'s parent among `objectsByName` (keyed by class name), without
337
+ * loading dependency manifests. An import-qualified parent only matches a
338
+ * definition of that package, never a same-named class of another one
339
+ * (#4176); a definition carrying no package identity still matches by name.
340
+ * `manifest` is the one `objectsByName` was built from, where a qualified
341
+ * parent that lost its class-name slot is still found.
342
+ */
343
+ namedParent(obj, objectsByName, manifest) {
344
+ const qualified = obj.extendsQualified;
345
+ if (!qualified) return obj.extends ? objectsByName.get(obj.extends) : void 0;
346
+ const direct = objectsByName.get(qualified);
347
+ if (direct) return direct;
348
+ const identity = (candidate) => candidate.qualifiedName ?? (candidate.packageName ? `${candidate.packageName}:${candidate.className}` : void 0);
349
+ const candidate = objectsByName.get(this.simpleClassName(qualified));
350
+ if (candidate && (identity(candidate) ?? qualified) === qualified) return candidate;
351
+ const keyed = manifest?.objects[qualified];
352
+ if (keyed) return keyed;
353
+ for (const definition of [...objectsByName.values(), ...Object.values(manifest?.objects ?? {})]) if (identity(definition) === qualified) return definition;
354
+ }
355
+ /**
336
356
  * Stamp `importPath` (via {@link determineImportPath}) on every object
337
357
  * that does not already have one. Safe to call unconditionally: objects
338
358
  * that went through `generateManifest()`'s own inline assignment already
@@ -681,7 +701,7 @@ var ManifestGenerator = class {
681
701
  const schemaClasses = new Map(Object.values(aggregatedManifest.objects).map((obj) => [obj.className, obj]));
682
702
  for (const obj of Object.values(manifest.objects)) schemaClasses.set(obj.className, obj);
683
703
  for (const [name, obj] of Object.entries(manifest.objects)) {
684
- if (this.extendsCollection(obj, schemaClasses)) {
704
+ if (this.extendsCollection(obj, schemaClasses, aggregatedManifest)) {
685
705
  delete obj.schema;
686
706
  continue;
687
707
  }
@@ -703,17 +723,17 @@ var ManifestGenerator = class {
703
723
  }
704
724
  this.resolveSamePackageForeignKeyColumnTypes(manifest, generator);
705
725
  for (const obj of Object.values(manifest.objects)) {
706
- if (!this.extendsCollection(obj, schemaClasses)) continue;
726
+ if (!this.extendsCollection(obj, schemaClasses, aggregatedManifest)) continue;
707
727
  let current = obj;
708
728
  const visited = /* @__PURE__ */ new Set();
709
729
  while (current && !visited.has(current)) {
710
730
  visited.add(current);
711
731
  const item = this.findItemClass(current, aggregatedManifest, schemaClasses);
712
- if (item?.schema && !this.extendsCollection(item, schemaClasses)) {
732
+ if (item?.schema && !this.extendsCollection(item, schemaClasses, aggregatedManifest)) {
713
733
  obj.schema = structuredClone(item.schema);
714
734
  break;
715
735
  }
716
- current = current.extends ? schemaClasses.get(current.extends) : void 0;
736
+ current = this.namedParent(current, schemaClasses, aggregatedManifest);
717
737
  }
718
738
  }
719
739
  }
@@ -1168,8 +1188,8 @@ var ManifestGenerator = class {
1168
1188
  }
1169
1189
  this.applySubclassExposureInheritance(manifest, objectsByName);
1170
1190
  for (const obj of Object.values(manifest.objects)) {
1171
- const isCollection = obj.extends === "SmrtCollection" || this.extendsCollection(obj, objectsByName);
1172
- if (!isCollection && !this.extendsAnyCollectionBase(obj, objectsByName)) continue;
1191
+ const isCollection = obj.extends === "SmrtCollection" || this.extendsCollection(obj, objectsByName, manifest);
1192
+ if (!isCollection && !this.extendsAnyCollectionBase(obj, objectsByName, manifest)) continue;
1173
1193
  const itemClass = this.findItemClass(obj, manifest, objectsByName);
1174
1194
  if (!itemClass || itemClass === obj) continue;
1175
1195
  logger.debug(`[manifest-generator] ${obj.className} is a collection class for ${itemClass.className}`);
@@ -1208,12 +1228,12 @@ var ManifestGenerator = class {
1208
1228
  if (!parentName) return void 0;
1209
1229
  const simpleParent = this.simpleClassName(parentName);
1210
1230
  if (FRAMEWORK_ABSTRACT_BASE_NAMES.has(simpleParent) || FRAMEWORK_METHOD_BASE_NAMES.has(simpleParent) || isSmrtCollectionExtendsName(parentName)) return;
1211
- if (this.extendsCollection(obj, objectsByName) || this.extendsAnyCollectionBase(obj, objectsByName)) return;
1231
+ if (this.extendsCollection(obj, objectsByName, manifest) || this.extendsAnyCollectionBase(obj, objectsByName, manifest)) return;
1212
1232
  let parent = (obj.extendsQualified ? manifest.objects[obj.extendsQualified] : void 0) ?? objectsByName.get(obj.extends ?? simpleParent);
1213
1233
  if (parent === obj) parent = void 0;
1214
1234
  if (!parent && manifest.smrtDependencies?.length) parent = this.loadParentFromExternalPackage(parentName, manifest.smrtDependencies, objectsByName);
1215
1235
  if (!parent || parent === obj) return void 0;
1216
- if (this.extendsCollection(parent, objectsByName) || this.extendsAnyCollectionBase(parent, objectsByName)) return;
1236
+ if (this.extendsCollection(parent, objectsByName, manifest) || this.extendsAnyCollectionBase(parent, objectsByName, manifest)) return;
1217
1237
  return parent;
1218
1238
  }
1219
1239
  /**
@@ -1295,7 +1315,7 @@ var ManifestGenerator = class {
1295
1315
  const objectsByName = new Map(Object.values(manifest.objects).map((objectDef) => [objectDef.className, objectDef]));
1296
1316
  const findings = [];
1297
1317
  for (const obj of Object.values(manifest.objects)) {
1298
- if (obj.extends !== "SmrtCollection" && !this.extendsCollection(obj, objectsByName) && !this.extendsAnyCollectionBase(obj, objectsByName)) continue;
1318
+ if (obj.extends !== "SmrtCollection" && !this.extendsCollection(obj, objectsByName, manifest) && !this.extendsAnyCollectionBase(obj, objectsByName, manifest)) continue;
1299
1319
  const itemClass = this.findItemClass(obj, manifest, objectsByName);
1300
1320
  if (!itemClass || itemClass === obj) continue;
1301
1321
  const escalations = findCollectionWriteEscalations(obj.decoratorConfig || {}, itemClass.decoratorConfig || {});
@@ -1312,14 +1332,14 @@ var ManifestGenerator = class {
1312
1332
  * `SmrtJunction`, `SmrtJunctionBase`, `SmrtReportCollection`), following
1313
1333
  * parents declared in this manifest.
1314
1334
  */
1315
- extendsAnyCollectionBase(obj, objectsByName) {
1335
+ extendsAnyCollectionBase(obj, objectsByName, manifest) {
1316
1336
  let current = obj;
1317
1337
  const visited = /* @__PURE__ */ new Set();
1318
1338
  while (current?.extends) {
1319
1339
  if (isSmrtCollectionExtendsName(current.extends)) return true;
1320
- if (visited.has(current.extends)) return false;
1321
- visited.add(current.extends);
1322
- current = objectsByName.get(current.extends);
1340
+ if (visited.has(current)) return false;
1341
+ visited.add(current);
1342
+ current = this.namedParent(current, objectsByName, manifest);
1323
1343
  }
1324
1344
  return false;
1325
1345
  }
@@ -1330,17 +1350,14 @@ var ManifestGenerator = class {
1330
1350
  * @param objectsByName - Map of className -> objectDef for lookups
1331
1351
  * @returns true if this class extends SmrtCollection
1332
1352
  */
1333
- extendsCollection(obj, objectsByName) {
1334
- if (!obj.extends) return false;
1335
- let currentClass = obj.extends;
1353
+ extendsCollection(obj, objectsByName, manifest) {
1354
+ let current = obj;
1336
1355
  const visited = /* @__PURE__ */ new Set();
1337
- while (currentClass) {
1338
- if (visited.has(currentClass)) break;
1339
- visited.add(currentClass);
1340
- if (currentClass === "SmrtCollection") return true;
1341
- const parentObj = objectsByName.get(currentClass);
1342
- if (!parentObj) break;
1343
- currentClass = parentObj.extends;
1356
+ while (current?.extends) {
1357
+ if (visited.has(current)) break;
1358
+ visited.add(current);
1359
+ if (current.extends === "SmrtCollection") return true;
1360
+ current = this.namedParent(current, objectsByName, manifest);
1344
1361
  }
1345
1362
  return false;
1346
1363
  }