functional-models 2.1.13 → 3.0.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.
package/properties.js CHANGED
@@ -12,23 +12,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.DenormalizedTextProperty = exports.DenormalizedNumberProperty = exports.DenormalizedIntegerProperty = exports.DenormalizedProperty = exports.BooleanProperty = exports.EmailProperty = exports.ObjectProperty = exports.NumberProperty = exports.ConstantValueProperty = exports.TextProperty = exports.IntegerProperty = exports.AdvancedModelReferenceProperty = exports.ModelReferenceProperty = exports.ArrayProperty = exports.DateProperty = exports.UniqueIdProperty = exports.UniqueId = exports.NaturalIdProperty = exports.Property = void 0;
15
+ exports.SingleTypeArrayProperty = exports.PrimaryKeyUuidProperty = exports.YearProperty = exports.BigTextProperty = exports.DenormalizedTextProperty = exports.DenormalizedNumberProperty = exports.DenormalizedIntegerProperty = exports.DenormalizedProperty = exports.BooleanProperty = exports.EmailProperty = exports.ObjectProperty = exports.NumberProperty = exports.ConstantValueProperty = exports.TextProperty = exports.IntegerProperty = exports.AdvancedModelReferenceProperty = exports.ModelReferenceProperty = exports.ArrayProperty = exports.DatetimeProperty = exports.DateProperty = exports.NaturalIdProperty = exports.Property = void 0;
16
16
  const merge_1 = __importDefault(require("lodash/merge"));
17
17
  const get_1 = __importDefault(require("lodash/get"));
18
- const format_1 = require("date-fns/format");
19
18
  const validation_1 = require("./validation");
20
- const constants_1 = require("./constants");
21
- const lazy_1 = require("./lazy");
22
19
  const utils_1 = require("./utils");
20
+ const types_1 = require("./types");
23
21
  const lib_1 = require("./lib");
22
+ const MAX_YEAR = 3000;
24
23
  const EMAIL_REGEX = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/u;
25
- const DEFAULT_JUST_DATE_FORMAT = 'yyyy-MM-dd';
26
- const Property = (type, config = {}, additionalMetadata = {}) => {
27
- if (!type && !(config === null || config === void 0 ? void 0 : config.type)) {
24
+ /**
25
+ * The base function that creates a fully loaded instance of a property. All standard issue properties use this function.
26
+ * @param propertyType - The property's value type.
27
+ * @param config - Configurations
28
+ * @param additionalMetadata - Additional metadata that you want to add to a given property.
29
+ * @typeParam TValue - The typescript value that the property produces.
30
+ * @typeParam TData - The DataDescription that this property instance belongs to.
31
+ * @typeParam TModelExtensions - Any additional model extensions
32
+ * @typeParam TModelInstanceExtensions - Any additional model instance extensions
33
+ */
34
+ const Property = (propertyType, config = {}, additionalMetadata = {}) => {
35
+ if (!propertyType && !(config === null || config === void 0 ? void 0 : config.typeOverride)) {
28
36
  throw new Error(`Property type must be provided.`);
29
37
  }
30
- if (config === null || config === void 0 ? void 0 : config.type) {
31
- type = config.type;
38
+ if (config === null || config === void 0 ? void 0 : config.typeOverride) {
39
+ propertyType = config.typeOverride;
32
40
  }
33
41
  const getConstantValue = () => ((config === null || config === void 0 ? void 0 : config.value) !== undefined ? config.value : undefined);
34
42
  const getDefaultValue = () => ((config === null || config === void 0 ? void 0 : config.defaultValue) !== undefined
@@ -40,38 +48,44 @@ const Property = (type, config = {}, additionalMetadata = {}) => {
40
48
  if (typeof valueSelector !== 'function') {
41
49
  throw new Error(`valueSelector must be a function`);
42
50
  }
43
- const r = Object.assign(Object.assign({}, additionalMetadata), { getConfig: () => config || {}, getChoices,
44
- getDefaultValue,
45
- getConstantValue, getPropertyType: () => type, createGetter: (instanceValue, modelData, instance) => {
46
- const constantValue = getConstantValue();
47
- if (constantValue !== undefined) {
48
- return () => constantValue;
49
- }
50
- const defaultValue = getDefaultValue();
51
- if (defaultValue !== undefined &&
52
- (instanceValue === null || instanceValue === undefined)) {
53
- return () => defaultValue;
54
- }
55
- const method = lazyLoadMethod
56
- ? // eslint-disable-next-line no-unused-vars
57
- (0, lazy_1.lazyValue)(lazyLoadMethod)
51
+ const createGetter = (instanceValue, modelData, instance) => {
52
+ const constantValue = getConstantValue();
53
+ if (constantValue !== undefined) {
54
+ return () => constantValue;
55
+ }
56
+ const defaultValue = getDefaultValue();
57
+ if (defaultValue !== undefined &&
58
+ (instanceValue === null || instanceValue === undefined)) {
59
+ return () => defaultValue;
60
+ }
61
+ const method = lazyLoadMethod
62
+ ? lazyLoadMethod
63
+ : config.lazyLoadMethodAtomic
64
+ ? (0, utils_1.memoizeAsync)(config.lazyLoadMethodAtomic)
58
65
  : typeof instanceValue === 'function'
59
66
  ? instanceValue
60
67
  : () => instanceValue;
61
- const r = () => {
62
- const result = method(instanceValue, modelData, instance);
63
- return valueSelector(result);
64
- };
65
- return r;
66
- }, getValidator: (valueGetter) => {
67
- const validator = (0, validation_1.createPropertyValidator)(valueGetter, config);
68
- const _propertyValidatorWrapper = (instance, instanceData, propertyConfiguration) => __awaiter(void 0, void 0, void 0, function* () {
69
- // @ts-ignore
70
- return validator(instance, instanceData, propertyConfiguration);
71
- });
72
- return _propertyValidatorWrapper;
73
- } });
74
- return r;
68
+ const valueGetter = (0, utils_1.memoizeSync)(() => {
69
+ // @ts-ignore
70
+ const result = method(instanceValue, modelData,
71
+ // @ts-ignore
72
+ instance);
73
+ return valueSelector(result);
74
+ });
75
+ return valueGetter;
76
+ };
77
+ const getValidator = (valueGetter) => {
78
+ const validator = (0, validation_1.createPropertyValidator)(valueGetter, config);
79
+ const _propertyValidatorWrapper = (instanceData, propertyConfiguration) => __awaiter(void 0, void 0, void 0, function* () {
80
+ return validator(instanceData, propertyConfiguration);
81
+ });
82
+ return _propertyValidatorWrapper;
83
+ };
84
+ const propertyInstance = Object.assign(Object.assign({}, additionalMetadata), { getConfig: () => config || {}, getChoices,
85
+ getDefaultValue,
86
+ getConstantValue, getPropertyType: () => propertyType, createGetter,
87
+ getValidator });
88
+ return propertyInstance;
75
89
  };
76
90
  exports.Property = Property;
77
91
  /**
@@ -85,81 +99,205 @@ const isDate = (value) => {
85
99
  return typeof value === 'object' && value.toISOString;
86
100
  };
87
101
  /**
88
- * A Property for Dates. Both strings and Date objects.
89
- * @param config
102
+ * A Property for Dates. Supports both strings and Date objects.
103
+ * This does NOT include time information.
104
+ * @param config - A configuration that enables overriding of date formatting
90
105
  * @param additionalMetadata
91
- * @constructor
92
106
  */
93
- const DateProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.DateProperty, (0, merge_1.default)({
107
+ const DateProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Date, (0, merge_1.default)({
94
108
  lazyLoadMethod: (value) => {
95
109
  if (isDate(value)) {
96
- if (config.format) {
97
- return (0, format_1.formatDate)(value, config.format);
110
+ if (config.formatFunction) {
111
+ return config.formatFunction(value, config.format);
112
+ }
113
+ return value.toISOString().split('T')[0];
114
+ }
115
+ if (!value && (config === null || config === void 0 ? void 0 : config.autoNow)) {
116
+ const date = new Date();
117
+ if (config.formatFunction) {
118
+ return config.formatFunction(date, config.format);
98
119
  }
99
- if (config.isDateOnly) {
100
- return (0, format_1.formatDate)(value, DEFAULT_JUST_DATE_FORMAT);
120
+ return date.toISOString().split('T')[0];
121
+ }
122
+ return value;
123
+ },
124
+ }, config), additionalMetadata);
125
+ exports.DateProperty = DateProperty;
126
+ /**
127
+ * A property for Date AND Times. Supports both strings and Date Objects.
128
+ * @param config - A configuration that enables overriding of date and time formatting
129
+ * @param additionalMetadata
130
+ */
131
+ const DatetimeProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Datetime, (0, merge_1.default)({
132
+ lazyLoadMethod: (value) => {
133
+ if (isDate(value)) {
134
+ if (config.formatFunction) {
135
+ return config.formatFunction(value, config.format);
101
136
  }
102
137
  return value.toISOString();
103
138
  }
104
139
  if (!value && (config === null || config === void 0 ? void 0 : config.autoNow)) {
105
140
  const date = new Date();
106
- if (config.format) {
107
- return (0, format_1.formatDate)(date, config.format);
108
- }
109
- if (config.isDateOnly) {
110
- return (0, format_1.formatDate)(date, DEFAULT_JUST_DATE_FORMAT);
141
+ if (config.formatFunction) {
142
+ return config.formatFunction(date, config.format);
111
143
  }
112
144
  return date.toISOString();
113
145
  }
114
146
  return value;
115
147
  },
116
148
  }, config), additionalMetadata);
117
- exports.DateProperty = DateProperty;
118
- const ArrayProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.ArrayProperty, Object.assign(Object.assign({ defaultValue: [] }, config), { isArray: true }), additionalMetadata);
149
+ exports.DatetimeProperty = DatetimeProperty;
150
+ /**
151
+ * A property that has an array of sub values.
152
+ * @param config
153
+ * @param additionalMetadata
154
+ */
155
+ const ArrayProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Array, Object.assign(Object.assign({ defaultValue: [] }, config), { isArray: true }), additionalMetadata);
119
156
  exports.ArrayProperty = ArrayProperty;
120
- const ObjectProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.ObjectProperty, (0, merge_1.default)(config, {
121
- validators: (0, lib_1.mergeValidators)(config, [(0, validation_1.isType)('object')]),
157
+ /**
158
+ * A property that is an array, but only of a single value type. This is an {@link ArrayProperty} but with a validator for the type.
159
+ * @param valueType - The type. (Only supports primitive data types, no objects)
160
+ * @param config
161
+ * @param additionalMetadata
162
+ */
163
+ const SingleTypeArrayProperty = (valueType, config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Array, Object.assign(Object.assign({ defaultValue: [] }, config), { isArray: true, validators: (0, lib_1.mergeValidators)(config,
164
+ // @ts-ignore
165
+ (0, validation_1.arrayType)(valueType)) }), additionalMetadata);
166
+ exports.SingleTypeArrayProperty = SingleTypeArrayProperty;
167
+ /**
168
+ * A property that has simple objects. These must be JSON compliant. These are validated.
169
+ * @param config
170
+ * @param additionalMetadata
171
+ */
172
+ const ObjectProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Object, (0, merge_1.default)(config, {
173
+ validators: (0, lib_1.mergeValidators)(config, (0, validation_1.isType)('object')),
122
174
  }), additionalMetadata);
123
175
  exports.ObjectProperty = ObjectProperty;
124
- const TextProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.TextProperty, (0, merge_1.default)(config, {
176
+ /**
177
+ * A simple text property. If it's possible to put ALOT of text in this field consider using the {@link BigTextProperty}
178
+ * @param config - Additional Configurations
179
+ * @param additionalMetadata - Additional Metadata
180
+ */
181
+ const TextProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Text, (0, merge_1.default)(config, {
125
182
  isString: true,
126
- validators: (0, lib_1.mergeValidators)(config, (0, lib_1.getCommonTextValidators)(config)),
183
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonTextValidators)(config)),
127
184
  }), additionalMetadata);
128
185
  exports.TextProperty = TextProperty;
129
- const IntegerProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.IntegerProperty, (0, merge_1.default)(config, {
186
+ /**
187
+ * A property for large blocks of strings.
188
+ * @param config - Additional configurations
189
+ * @param additionalMetadata - Additional metadata
190
+ */
191
+ const BigTextProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.BigText, (0, merge_1.default)(config, {
192
+ isString: true,
193
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonTextValidators)(config)),
194
+ }), additionalMetadata);
195
+ exports.BigTextProperty = BigTextProperty;
196
+ /**
197
+ * A property that houses integers. No floats allowed.
198
+ * @param config
199
+ * @param additionalMetadata
200
+ */
201
+ const IntegerProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Integer, (0, merge_1.default)(config, {
130
202
  isInteger: true,
131
- validators: (0, lib_1.mergeValidators)(config, (0, lib_1.getCommonNumberValidators)(config)),
203
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonNumberValidators)(config)),
132
204
  }), additionalMetadata);
133
205
  exports.IntegerProperty = IntegerProperty;
134
- const NumberProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.NumberProperty, (0, merge_1.default)(config, {
206
+ /**
207
+ * An integer property that represents a year. NOTE: This is exclusively focused on a year in a modern context.
208
+ * Validates from 0 to 3000
209
+ * @param config
210
+ * @param additionalMetadata
211
+ */
212
+ const YearProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Integer, (0, merge_1.default)(config, {
213
+ isInteger: true,
214
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonNumberValidators)(config), (0, validation_1.minNumber)(0), (0, validation_1.maxNumber)(MAX_YEAR)),
215
+ }), additionalMetadata);
216
+ exports.YearProperty = YearProperty;
217
+ /**
218
+ * A property for numbers. This could be integers or float values.
219
+ * @param config
220
+ * @param additionalMetadata
221
+ */
222
+ const NumberProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Number, (0, merge_1.default)(config, {
135
223
  isNumber: true,
136
- validators: (0, lib_1.mergeValidators)(config, (0, lib_1.getCommonNumberValidators)(config)),
224
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonNumberValidators)(config)),
137
225
  }), additionalMetadata);
138
226
  exports.NumberProperty = NumberProperty;
139
- const ConstantValueProperty = (value, config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.ConstantValueProperty, (0, merge_1.default)(config, {
227
+ /**
228
+ * A property that has a fixed value that can never be changed. Can be useful for things like embedding the name of a model into JSONified objects.
229
+ * @param valueType - The value type for this property.
230
+ * @param value - The value to fix.
231
+ * @param config
232
+ * @param additionalMetadata
233
+ */
234
+ const ConstantValueProperty = (valueType, value, config = {}, additionalMetadata = {}) => Property(valueType, (0, merge_1.default)(config, {
140
235
  value,
141
236
  }), additionalMetadata);
142
237
  exports.ConstantValueProperty = ConstantValueProperty;
238
+ /**
239
+ * A property that encapsulates email addresses. Provides validation for making sure an email is valid.
240
+ * @param config
241
+ * @param additionalMetadata
242
+ */
143
243
  const EmailProperty = (config = {}, additionalMetadata = {}) => TextProperty((0, merge_1.default)(config, {
144
- type: constants_1.PROPERTY_TYPES.EmailProperty,
145
- validators: (0, lib_1.mergeValidators)(config, [(0, validation_1.meetsRegex)(EMAIL_REGEX)]),
244
+ type: types_1.PropertyType.Email,
245
+ validators: (0, lib_1.mergeValidators)(config, (0, validation_1.meetsRegex)(EMAIL_REGEX)),
146
246
  }), additionalMetadata);
147
247
  exports.EmailProperty = EmailProperty;
148
- const BooleanProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.BooleanProperty, (0, merge_1.default)(config, {
248
+ /**
249
+ * A property that has a true or false value.
250
+ * @param config
251
+ * @param additionalMetadata
252
+ */
253
+ const BooleanProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Boolean, (0, merge_1.default)(config, {
149
254
  isBoolean: true,
150
255
  }), additionalMetadata);
151
256
  exports.BooleanProperty = BooleanProperty;
152
- const UniqueId = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.UniqueId, (0, merge_1.default)({
257
+ /**
258
+ * A property that is used for Primary Keys. If no value is provided a UUID is automatically created.
259
+ * This property has required on it.
260
+ * @param config - Additional configurations. NOTE: required is ALWAYS true.
261
+ * @param additionalMetadata - Any additional metadata.
262
+ */
263
+ const PrimaryKeyUuidProperty = (config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.UniqueId, (0, merge_1.default)(config, {
264
+ required: true,
265
+ isString: true,
266
+ validators: (0, lib_1.mergeValidators)(config, validation_1.isValidUuid),
153
267
  lazyLoadMethod: (value) => {
154
268
  if (!value) {
155
269
  return (0, utils_1.createUuid)();
156
270
  }
157
271
  return value;
158
272
  },
159
- }, config), additionalMetadata);
160
- exports.UniqueId = UniqueId;
273
+ }), additionalMetadata);
274
+ exports.PrimaryKeyUuidProperty = PrimaryKeyUuidProperty;
275
+ /**
276
+ * A property that has a reference to another model instance. A "Foreign Key" if you will.
277
+ * For full functionality a {@link ModelInstanceFetcher} must be provided in the config.
278
+ * This property has complex functionalities.
279
+ *
280
+ * When a model calls "instance.get.whatever()" to get the value of a ModelReferenceProperty, it uses the model fetcher
281
+ * to retrieve the model. (Could be saved elsewhere, or a database). When the promise is awaited, the value returned
282
+ * is a ModelInstance object.
283
+ *
284
+ * However, when `toObj()` is called on that same instance, only the primary key value is returned. This is so that
285
+ * when you call `toObj()` on the main instance, the "foreign key" gets filled in.
286
+ *
287
+ * This is useful for a save function with an ORM.
288
+ * @param model - Either the model itself or a function that creates the model when needed (lazy).
289
+ * @param config
290
+ * @param additionalMetadata
291
+ */
161
292
  const ModelReferenceProperty = (model, config = {}, additionalMetadata = {}) => AdvancedModelReferenceProperty(model, config, additionalMetadata);
162
293
  exports.ModelReferenceProperty = ModelReferenceProperty;
294
+ /**
295
+ * The full implementation of a ModelReference, useful for typing certain extended functionalities.
296
+ * For a full description see {@link ModelReferenceProperty}
297
+ * @param model - A model or a function that returns the model.
298
+ * @param config
299
+ * @param additionalMetadata
300
+ */
163
301
  const AdvancedModelReferenceProperty = (model, config = {}, additionalMetadata = {}) => {
164
302
  if (!model) {
165
303
  throw new Error('Must include the referenced model');
@@ -170,14 +308,12 @@ const AdvancedModelReferenceProperty = (model, config = {}, additionalMetadata =
170
308
  }
171
309
  return model;
172
310
  };
311
+ // @ts-ignore
173
312
  const validator = (0, validation_1.referenceTypeMatch)(model);
174
- const validators = (0, lib_1.mergeValidators)(config, [
175
- // @ts-ignore
176
- validator,
177
- ]);
313
+ const validators = (0, lib_1.mergeValidators)(config, validator);
178
314
  const _getId = (instanceValues) => () => {
179
315
  if (!instanceValues) {
180
- return null;
316
+ return undefined;
181
317
  }
182
318
  if (typeof instanceValues === 'number') {
183
319
  return instanceValues;
@@ -189,21 +325,22 @@ const AdvancedModelReferenceProperty = (model, config = {}, additionalMetadata =
189
325
  return instanceValues.getPrimaryKey();
190
326
  }
191
327
  const theModel = _getModel();
192
- const primaryKey = theModel.getPrimaryKeyName();
328
+ const primaryKey = theModel.getModelDefinition().primaryKeyName;
329
+ // @ts-ignore
193
330
  return instanceValues[primaryKey];
194
331
  };
195
- const lazyLoadMethod = (instanceValues) => __awaiter(void 0, void 0, void 0, function* () {
332
+ const lazyLoadMethodAtomic = (instanceValues) => __awaiter(void 0, void 0, void 0, function* () {
196
333
  const valueIsModelInstance = (0, lib_1.isModelInstance)(instanceValues);
197
334
  const _getInstanceReturn = (objToUse) => {
198
335
  // We need to determine if the object we just got is an actual model instance to determine if we need to make one.
199
336
  const objIsModelInstance = (0, lib_1.isModelInstance)(objToUse);
200
- // @ts-ignore
201
337
  const instance = objIsModelInstance
202
338
  ? objToUse
203
- : _getModel().create(objToUse);
339
+ : // @ts-ignore
340
+ _getModel().create(objToUse);
204
341
  // We are replacing the toObj function, because the reference type in the end should be the primary key when serialized.
205
342
  return (0, merge_1.default)({}, instance, {
206
- toObj: _getId(instanceValues),
343
+ toObj: (0, utils_1.memoizeAsync)(_getId(instanceValues)),
207
344
  });
208
345
  };
209
346
  // @ts-ignore
@@ -212,7 +349,7 @@ const AdvancedModelReferenceProperty = (model, config = {}, additionalMetadata =
212
349
  }
213
350
  // TypedJson?
214
351
  const theModel = _getModel();
215
- const primaryKey = theModel.getPrimaryKeyName();
352
+ const primaryKey = theModel.getModelDefinition().primaryKeyName;
216
353
  if ((0, get_1.default)(instanceValues, primaryKey)) {
217
354
  return _getInstanceReturn(instanceValues);
218
355
  }
@@ -227,9 +364,9 @@ const AdvancedModelReferenceProperty = (model, config = {}, additionalMetadata =
227
364
  }
228
365
  return _getId(instanceValues)();
229
366
  });
230
- const p = (0, merge_1.default)(Property(constants_1.PROPERTY_TYPES.ReferenceProperty, (0, merge_1.default)({}, config, {
367
+ const p = (0, merge_1.default)(Property(types_1.PropertyType.ModelReference, (0, merge_1.default)({}, config, {
231
368
  validators,
232
- lazyLoadMethod,
369
+ lazyLoadMethodAtomic,
233
370
  }), additionalMetadata), {
234
371
  getReferencedId: (instanceValues) => _getId(instanceValues)(),
235
372
  getReferencedModel: _getModel,
@@ -238,17 +375,22 @@ const AdvancedModelReferenceProperty = (model, config = {}, additionalMetadata =
238
375
  };
239
376
  exports.AdvancedModelReferenceProperty = AdvancedModelReferenceProperty;
240
377
  /**
241
- * A property for denormalizing values.
378
+ * A property for Denormalizing. This represents a complex value that has been simplified for ease of use.
379
+ * One common use is for creating "Display Values" in a GUI. This process can be extremely expensive, such as having to
380
+ * get selected values 2 or 3 Foreign Keys deep.
381
+ *
382
+ * This property allows passing in a calculate function that will only be executed once, and only if there is no value, and then only when asked.
383
+ *
384
+ * To recalculate the value, you need to run the calculate function on the property itself, passing in new model data.
242
385
  * @param propertyType - A property type.
243
386
  * @param calculate - A function for calculating the denormalized value.
244
387
  * @param config - A Config
245
388
  * @param additionalMetadata _ Any additional metadata.
246
- * @constructor
247
389
  */
248
390
  const DenormalizedProperty = (propertyType, calculate, config = {}, additionalMetadata = {}) => {
249
391
  const property = Property(propertyType, (0, merge_1.default)(config, {
250
392
  isDenormalized: true,
251
- lazyLoadMethod: (value, modelData, modelInstance) => __awaiter(void 0, void 0, void 0, function* () {
393
+ lazyLoadMethodAtomic: (value, modelData, modelInstance) => __awaiter(void 0, void 0, void 0, function* () {
252
394
  if (value !== undefined) {
253
395
  return value;
254
396
  }
@@ -265,11 +407,10 @@ exports.DenormalizedProperty = DenormalizedProperty;
265
407
  * @param calculate - A function that can get a string
266
408
  * @param config - Any configs
267
409
  * @param additionalMetadata - Optional Metadata
268
- * @constructor
269
410
  */
270
- const DenormalizedTextProperty = (calculate, config = {}, additionalMetadata = {}) => DenormalizedProperty(constants_1.PROPERTY_TYPES.TextProperty, calculate, (0, merge_1.default)(config, {
411
+ const DenormalizedTextProperty = (calculate, config = {}, additionalMetadata = {}) => DenormalizedProperty(types_1.PropertyType.Text, calculate, (0, merge_1.default)(config, {
271
412
  isString: true,
272
- validators: (0, lib_1.mergeValidators)(config, (0, lib_1.getCommonTextValidators)(config)),
413
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonTextValidators)(config)),
273
414
  }), additionalMetadata);
274
415
  exports.DenormalizedTextProperty = DenormalizedTextProperty;
275
416
  /**
@@ -277,11 +418,10 @@ exports.DenormalizedTextProperty = DenormalizedTextProperty;
277
418
  * @param calculate - A function that can get a string
278
419
  * @param config - Any configs
279
420
  * @param additionalMetadata - Optional Metadata
280
- * @constructor
281
421
  */
282
- const DenormalizedNumberProperty = (calculate, config = {}, additionalMetadata = {}) => DenormalizedProperty(constants_1.PROPERTY_TYPES.NumberProperty, calculate, (0, merge_1.default)(config, {
422
+ const DenormalizedNumberProperty = (calculate, config = {}, additionalMetadata = {}) => DenormalizedProperty(types_1.PropertyType.Number, calculate, (0, merge_1.default)(config, {
283
423
  isNumber: true,
284
- validators: (0, lib_1.mergeValidators)(config, (0, lib_1.getCommonNumberValidators)(config)),
424
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonNumberValidators)(config)),
285
425
  }), additionalMetadata);
286
426
  exports.DenormalizedNumberProperty = DenormalizedNumberProperty;
287
427
  /**
@@ -289,17 +429,15 @@ exports.DenormalizedNumberProperty = DenormalizedNumberProperty;
289
429
  * @param calculate - A function that can get a string
290
430
  * @param config - Any configs
291
431
  * @param additionalMetadata - Optional Metadata
292
- * @constructor
293
432
  */
294
- const DenormalizedIntegerProperty = (calculate, config = {}, additionalMetadata = {}) => DenormalizedProperty(constants_1.PROPERTY_TYPES.IntegerProperty, calculate, (0, merge_1.default)(config, {
433
+ const DenormalizedIntegerProperty = (calculate, config = {}, additionalMetadata = {}) => DenormalizedProperty(types_1.PropertyType.Integer, calculate, (0, merge_1.default)(config, {
295
434
  isInteger: true,
296
- validators: (0, lib_1.mergeValidators)(config, (0, lib_1.getCommonNumberValidators)(config)),
435
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonNumberValidators)(config)),
297
436
  }), additionalMetadata);
298
437
  exports.DenormalizedIntegerProperty = DenormalizedIntegerProperty;
299
438
  /**
300
- * An Id that is naturally formed by the other properties within a model.
301
- * Instead of having a "globally unique" id the model is unique because
302
- * the composition of values of properties.
439
+ * An id that is naturally formed by other properties within a model.
440
+ * Instead of having a "globally unique" id the model is unique because the composition of values of properties.
303
441
  * @param propertyKeys A list (in order) of property keys needed to make the id. These keys can take nested paths
304
442
  * if a property is an object, array, or even a model instance object. Example: 'nested.path.here'.
305
443
  * Note: If ANY of the properties are undefined, the key becomes undefined. This is to ensure key structure integrity.
@@ -310,12 +448,11 @@ exports.DenormalizedIntegerProperty = DenormalizedIntegerProperty;
310
448
  * @param joiner A string that will be passed to ".join()" for creating a single string.
311
449
  * @param config
312
450
  * @param additionalMetadata
313
- * @constructor
314
451
  */
315
- const NaturalIdProperty = (propertyKeys, joiner, config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.TextProperty, (0, merge_1.default)(config, {
452
+ const NaturalIdProperty = (propertyKeys, joiner, config = {}, additionalMetadata = {}) => Property(types_1.PropertyType.Text, (0, merge_1.default)(config, {
316
453
  isString: true,
317
- validators: (0, lib_1.mergeValidators)(config, (0, lib_1.getCommonTextValidators)(config)),
318
- lazyLoadMethod: (value, model, modelInstance) => __awaiter(void 0, void 0, void 0, function* () {
454
+ validators: (0, lib_1.mergeValidators)(config, ...(0, lib_1.getCommonTextValidators)(config)),
455
+ lazyLoadMethodAtomic: (value, model, modelInstance) => __awaiter(void 0, void 0, void 0, function* () {
319
456
  const data = yield propertyKeys.reduce((accP, key) => __awaiter(void 0, void 0, void 0, function* () {
320
457
  const acc = yield accP;
321
458
  const [head] = (0, utils_1.createHeadAndTail)(key.split('.'), '.');
@@ -332,7 +469,4 @@ const NaturalIdProperty = (propertyKeys, joiner, config = {}, additionalMetadata
332
469
  }),
333
470
  }), additionalMetadata);
334
471
  exports.NaturalIdProperty = NaturalIdProperty;
335
- // We are adding this here to normalize the name, while maintaining backwards compatability.
336
- const UniqueIdProperty = UniqueId;
337
- exports.UniqueIdProperty = UniqueIdProperty;
338
472
  //# sourceMappingURL=properties.js.map
package/properties.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { PropertyGetters, toObj, FunctionalModel } from './interfaces';
2
- declare const toJsonAble: <T extends FunctionalModel>(keyToFunc: PropertyGetters<T>) => toObj<T>;
1
+ import { PropertyGetters, ToObjectFunction, DataDescription } from './types';
2
+ declare const toJsonAble: <T extends DataDescription>(keyToFunc: PropertyGetters<T>) => ToObjectFunction<T>;
3
3
  export { toJsonAble };
package/serialization.js CHANGED
@@ -41,7 +41,7 @@ const _getValue = (value) => __awaiter(void 0, void 0, void 0, function* () {
41
41
  return value;
42
42
  });
43
43
  const toJsonAble = (keyToFunc) => () => {
44
- return Object.entries(keyToFunc).reduce((acc, [key, value]) => __awaiter(void 0, void 0, void 0, function* () {
44
+ return Object.entries(keyToFunc).reduce((acc_1, _a) => __awaiter(void 0, [acc_1, _a], void 0, function* (acc, [key, value]) {
45
45
  const realAcc = yield acc;
46
46
  const trueValue = yield _getValue(yield value);
47
47
  return (0, merge_1.default)(realAcc, { [key]: trueValue });
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAgC;AAUhC,MAAM,eAAe,GAAG,CAAC,GAAQ,EAA6B,EAAE;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAO,KAAU,EAA4B,EAAE;IAC/D,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,IAAI,CAAA;KACZ;IACD,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,OAAO,IAAI,CAAA;KACZ;IACD,MAAM,IAAI,GAAG,OAAO,KAAK,CAAA;IACzB,MAAM,UAAU,GAAG,KAAgC,CAAA;IACnD,IAAI,IAAI,KAAK,UAAU,EAAE;QACvB,OAAO,SAAS,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;KACrC;IACD,gBAAgB;IAChB,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;KACtC;IACD,QAAQ;IACR,MAAM,MAAM,GAAG,KAAa,CAAA;IAC5B,IAAI,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;QAC3C,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;KACvC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA,CAAA;AAED,MAAM,UAAU,GACd,CAA4B,SAA6B,EAAY,EAAE,CACvE,GAAG,EAAE;IACH,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAO,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA;QACzB,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,KAAK,CAAC,CAAA;QAC9C,OAAO,IAAA,eAAK,EAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAA,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAA6B,CAAA;AACrD,CAAC,CAAA;AAEM,gCAAU"}
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAgC;AAWhC,MAAM,eAAe,GAAG,CAAC,GAAQ,EAA6B,EAAE;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAO,KAAU,EAA4B,EAAE;IAC/D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,KAAK,CAAA;IACzB,MAAM,UAAU,GAAG,KAAgC,CAAA;IACnD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;IACtC,CAAC;IACD,gBAAgB;IAChB,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;IACvC,CAAC;IACD,QAAQ;IACR,MAAM,MAAM,GAAG,KAAa,CAAA;IAC5B,IAAI,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA,CAAA;AAED,MAAM,UAAU,GACd,CACE,SAA6B,EACR,EAAE,CACzB,GAEE,EAAE;IACF,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,YAA0B,EAAE,mDAArB,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA;QACzB,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,KAAK,CAAC,CAAA;QAC9C,OAAO,IAAA,eAAK,EAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAA,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAA+B,CAAA;AACvD,CAAC,CAAA;AAEM,gCAAU"}