@rhino-dev/rhino-nestjs 4.8.0 → 4.9.0

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.
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.SerializerService = exports.BASE_HIDDEN_COLUMNS = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const rhino_config_1 = require("../rhino.config");
18
+ const computed_attribute_spec_1 = require("../utils/computed-attribute-spec");
18
19
  exports.BASE_HIDDEN_COLUMNS = [
19
20
  'password',
20
21
  'rememberToken',
@@ -63,7 +64,7 @@ let SerializerService = class SerializerService {
63
64
  serializeOne(record, reg, ctx) {
64
65
  if (!record)
65
66
  return record;
66
- const { user, organization, computedAttributes } = this.normalizeCtx(ctx);
67
+ const { user, organization, computedAttributes, computedAttributeArgs } = this.normalizeCtx(ctx);
67
68
  let result = { ...record };
68
69
  if (reg.computedAttributes) {
69
70
  Object.assign(result, reg.computedAttributes(record, user));
@@ -71,7 +72,7 @@ let SerializerService = class SerializerService {
71
72
  // Merge the OPT-IN record-level computed attributes the client selected.
72
73
  // Nothing is evaluated unless it was asked for by name. Merged BEFORE
73
74
  // policy filtering, so the blacklist/whitelist below still govern them.
74
- Object.assign(result, this.resolveRecordComputed(record, reg, computedAttributes, user));
75
+ Object.assign(result, this.resolveRecordComputed(record, reg, computedAttributes, user, computedAttributeArgs));
75
76
  for (const col of exports.BASE_HIDDEN_COLUMNS) {
76
77
  delete result[col];
77
78
  }
@@ -106,8 +107,12 @@ let SerializerService = class SerializerService {
106
107
  * Names that are not declared are silently skipped — the controller has
107
108
  * already rejected unknown/forbidden names with a 403, and a direct
108
109
  * serializer caller must not be able to force an arbitrary call.
110
+ *
111
+ * An attribute that declares a required parameter is likewise skipped when
112
+ * `args` carries no entry for it, so an existing caller that passes only
113
+ * names gets a missing key rather than a callable invoked with nothing.
109
114
  */
110
- resolveRecordComputed(record, reg, names, user) {
115
+ resolveRecordComputed(record, reg, names, user, args) {
111
116
  if (!names || names.length === 0)
112
117
  return {};
113
118
  const declared = reg.recordComputedAttributes;
@@ -115,24 +120,32 @@ let SerializerService = class SerializerService {
115
120
  return {};
116
121
  const out = {};
117
122
  for (const name of names) {
118
- if (typeof name !== 'string')
123
+ // Own-key lookup so a prototype key can never resolve to a member.
124
+ const spec = (0, computed_attribute_spec_1.lookupComputedAttribute)(declared, name);
125
+ if (!spec)
119
126
  continue;
120
- if (!Object.prototype.hasOwnProperty.call(declared, name))
127
+ const hasArgs = !!args && Object.prototype.hasOwnProperty.call(args, name);
128
+ if (!hasArgs && (0, computed_attribute_spec_1.computedAttributeRequiresArguments)(spec))
121
129
  continue;
122
- const entry = declared[name];
123
- out[name] = typeof entry === 'function' ? entry(record, user) : entry;
130
+ const entry = spec.using;
131
+ out[name] =
132
+ typeof entry === 'function' ? entry(record, user, hasArgs ? args[name] : {}) : entry;
124
133
  }
125
134
  return out;
126
135
  }
127
136
  normalizeCtx(ctx) {
128
- // New call shape: { user, organization, computedAttributes }
137
+ // New call shape: { user, organization, computedAttributes, computedAttributeArgs }
129
138
  if (ctx &&
130
139
  typeof ctx === 'object' &&
131
- ('user' in ctx || 'organization' in ctx || 'computedAttributes' in ctx)) {
140
+ ('user' in ctx ||
141
+ 'organization' in ctx ||
142
+ 'computedAttributes' in ctx ||
143
+ 'computedAttributeArgs' in ctx)) {
132
144
  return {
133
145
  user: ctx.user,
134
146
  organization: ctx.organization,
135
147
  computedAttributes: ctx.computedAttributes,
148
+ computedAttributeArgs: ctx.computedAttributeArgs,
136
149
  };
137
150
  }
138
151
  // Legacy call shape: a bare user (or null/undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.service.js","sourceRoot":"","sources":["../../src/services/serializer.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serializer.service.js","sourceRoot":"","sources":["../../src/services/serializer.service.ts"],"names":[],"mappings":"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"}