metal-orm 1.0.70 → 1.0.72

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
@@ -5831,6 +5831,10 @@ var instantiateWrapper = (meta, relationName, relation, owner, createEntity) =>
5831
5831
  };
5832
5832
 
5833
5833
  // src/orm/entity.ts
5834
+ var isRelationWrapperLoaded = (value) => {
5835
+ if (!value || typeof value !== "object") return false;
5836
+ return Boolean(value.loaded);
5837
+ };
5834
5838
  var createEntityProxy = (ctx, table, row, lazyRelations = [], lazyRelationOptions = /* @__PURE__ */ new Map()) => {
5835
5839
  const target = { ...row };
5836
5840
  const meta = {
@@ -5843,6 +5847,19 @@ var createEntityProxy = (ctx, table, row, lazyRelations = [], lazyRelationOption
5843
5847
  relationWrappers: /* @__PURE__ */ new Map()
5844
5848
  };
5845
5849
  const createRelationEntity = (relationTable, relationRow) => createEntityFromRow(meta.ctx, relationTable, relationRow);
5850
+ const buildJson = (self) => {
5851
+ const json = {};
5852
+ for (const key of Object.keys(target)) {
5853
+ json[key] = self[key];
5854
+ }
5855
+ for (const [relationName, wrapper] of meta.relationWrappers) {
5856
+ if (Object.prototype.hasOwnProperty.call(json, relationName)) continue;
5857
+ if (isRelationWrapperLoaded(wrapper)) {
5858
+ json[relationName] = wrapper;
5859
+ }
5860
+ }
5861
+ return json;
5862
+ };
5846
5863
  Object.defineProperty(target, ENTITY_META, {
5847
5864
  value: meta,
5848
5865
  enumerable: false,
@@ -5862,6 +5879,12 @@ var createEntityProxy = (ctx, table, row, lazyRelations = [], lazyRelationOption
5862
5879
  return void 0;
5863
5880
  };
5864
5881
  }
5882
+ if (prop === "toJSON") {
5883
+ if (prop in targetObj) {
5884
+ return Reflect.get(targetObj, prop, receiver);
5885
+ }
5886
+ return () => buildJson(receiver);
5887
+ }
5865
5888
  if (typeof prop === "string" && table.relations[prop]) {
5866
5889
  return getRelationWrapper(meta, prop, receiver, createRelationEntity);
5867
5890
  }