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.cjs CHANGED
@@ -6106,6 +6106,10 @@ var instantiateWrapper = (meta, relationName, relation, owner, createEntity) =>
6106
6106
  };
6107
6107
 
6108
6108
  // src/orm/entity.ts
6109
+ var isRelationWrapperLoaded = (value) => {
6110
+ if (!value || typeof value !== "object") return false;
6111
+ return Boolean(value.loaded);
6112
+ };
6109
6113
  var createEntityProxy = (ctx, table, row, lazyRelations = [], lazyRelationOptions = /* @__PURE__ */ new Map()) => {
6110
6114
  const target = { ...row };
6111
6115
  const meta = {
@@ -6118,6 +6122,19 @@ var createEntityProxy = (ctx, table, row, lazyRelations = [], lazyRelationOption
6118
6122
  relationWrappers: /* @__PURE__ */ new Map()
6119
6123
  };
6120
6124
  const createRelationEntity = (relationTable, relationRow) => createEntityFromRow(meta.ctx, relationTable, relationRow);
6125
+ const buildJson = (self) => {
6126
+ const json = {};
6127
+ for (const key of Object.keys(target)) {
6128
+ json[key] = self[key];
6129
+ }
6130
+ for (const [relationName, wrapper] of meta.relationWrappers) {
6131
+ if (Object.prototype.hasOwnProperty.call(json, relationName)) continue;
6132
+ if (isRelationWrapperLoaded(wrapper)) {
6133
+ json[relationName] = wrapper;
6134
+ }
6135
+ }
6136
+ return json;
6137
+ };
6121
6138
  Object.defineProperty(target, ENTITY_META, {
6122
6139
  value: meta,
6123
6140
  enumerable: false,
@@ -6137,6 +6154,12 @@ var createEntityProxy = (ctx, table, row, lazyRelations = [], lazyRelationOption
6137
6154
  return void 0;
6138
6155
  };
6139
6156
  }
6157
+ if (prop === "toJSON") {
6158
+ if (prop in targetObj) {
6159
+ return Reflect.get(targetObj, prop, receiver);
6160
+ }
6161
+ return () => buildJson(receiver);
6162
+ }
6140
6163
  if (typeof prop === "string" && table.relations[prop]) {
6141
6164
  return getRelationWrapper(meta, prop, receiver, createRelationEntity);
6142
6165
  }