@dereekb/model 10.1.29 → 10.2.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/index.cjs.js CHANGED
@@ -2543,9 +2543,7 @@ function IsISO8601DayString(validationOptions) {
2543
2543
  options: validationOptions,
2544
2544
  validator: {
2545
2545
  validate: util.isISO8601DayString,
2546
- defaultMessage(args) {
2547
- return `"${args.value}" is not a ISO8601DayString.`;
2548
- }
2546
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args === null || args === void 0 ? void 0 : args.value}" is not a ISO8601DayString.`, validationOptions)
2549
2547
  }
2550
2548
  });
2551
2549
  };
@@ -2563,9 +2561,7 @@ function IsMinuteOfDay(validationOptions) {
2563
2561
  options: validationOptions,
2564
2562
  validator: {
2565
2563
  validate: util.isMinuteOfDay,
2566
- defaultMessage(args) {
2567
- return `"${args.value}" is not a valid minute of the day.`;
2568
- }
2564
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args === null || args === void 0 ? void 0 : args.value}" is not a valid minute of the day.`, validationOptions)
2569
2565
  }
2570
2566
  });
2571
2567
  };
@@ -2583,9 +2579,7 @@ function IsE164PhoneNumber(validationOptions) {
2583
2579
  options: validationOptions,
2584
2580
  validator: {
2585
2581
  validate: x => util.isE164PhoneNumber(x, false),
2586
- defaultMessage(args) {
2587
- return `"${args.value}" is not a E164PhoneNumber with no extension.`;
2588
- }
2582
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args === null || args === void 0 ? void 0 : args.value}" is not a E164PhoneNumber with no extension.`, validationOptions)
2589
2583
  }
2590
2584
  });
2591
2585
  };
@@ -2605,9 +2599,7 @@ function IsE164PhoneNumberWithOptionalExtension(validationOptions) {
2605
2599
  options: validationOptions,
2606
2600
  validator: {
2607
2601
  validate: x => util.isE164PhoneNumber(x, true),
2608
- defaultMessage(args) {
2609
- return `"${args.value}" is not an E164PhoneNumber or has an invalid extension.`;
2610
- }
2602
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args === null || args === void 0 ? void 0 : args.value}" is not an E164PhoneNumber or has an invalid extension.`, validationOptions)
2611
2603
  }
2612
2604
  });
2613
2605
  };
@@ -2627,9 +2619,26 @@ function IsE164PhoneNumberWithExtension(validationOptions) {
2627
2619
  options: validationOptions,
2628
2620
  validator: {
2629
2621
  validate: util.isE164PhoneNumberWithExtension,
2630
- defaultMessage(args) {
2631
- return `"${args.value}" is not a E164PhoneNumberWithExtension.`;
2632
- }
2622
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args === null || args === void 0 ? void 0 : args.value}" is not a E164PhoneNumberWithExtension.`, validationOptions)
2623
+ }
2624
+ });
2625
+ };
2626
+ }
2627
+
2628
+ /**
2629
+ * isUniqueKeyedFunction validator
2630
+ */
2631
+ function IsUniqueKeyed(readKey, validationOptions) {
2632
+ const isUniqueKeyed = util.isUniqueKeyedFunction(readKey);
2633
+ return function (object, propertyName) {
2634
+ classValidator.registerDecorator({
2635
+ name: 'isUniqueKeyed',
2636
+ target: object.constructor,
2637
+ propertyName: propertyName,
2638
+ options: validationOptions,
2639
+ validator: {
2640
+ validate: isUniqueKeyed,
2641
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value has one or more values with the same key. Keys must be unique.`, validationOptions)
2633
2642
  }
2634
2643
  });
2635
2644
  };
@@ -2647,9 +2656,7 @@ function IsWebsiteUrl(validationOptions) {
2647
2656
  options: validationOptions,
2648
2657
  validator: {
2649
2658
  validate: util.isWebsiteUrl,
2650
- defaultMessage(args) {
2651
- return `"${args.value}" is not a valid website url`;
2652
- }
2659
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args === null || args === void 0 ? void 0 : args.value}" is not a valid website url.`, validationOptions)
2653
2660
  }
2654
2661
  });
2655
2662
  };
@@ -2666,9 +2673,7 @@ function IsWebsiteUrlWithPrefix(validationOptions) {
2666
2673
  options: validationOptions,
2667
2674
  validator: {
2668
2675
  validate: util.isWebsiteUrlWithPrefix,
2669
- defaultMessage(args) {
2670
- return `"${args.value}" is not a valid website url with a http/https prefix.`;
2671
- }
2676
+ defaultMessage: classValidator.buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args === null || args === void 0 ? void 0 : args.value}" is not a valid website url that starts with a http/https prefix.`, validationOptions)
2672
2677
  }
2673
2678
  });
2674
2679
  };
@@ -2703,6 +2708,7 @@ exports.IsE164PhoneNumberWithExtension = IsE164PhoneNumberWithExtension;
2703
2708
  exports.IsE164PhoneNumberWithOptionalExtension = IsE164PhoneNumberWithOptionalExtension;
2704
2709
  exports.IsISO8601DayString = IsISO8601DayString;
2705
2710
  exports.IsMinuteOfDay = IsMinuteOfDay;
2711
+ exports.IsUniqueKeyed = IsUniqueKeyed;
2706
2712
  exports.IsWebsiteUrl = IsWebsiteUrl;
2707
2713
  exports.IsWebsiteUrlWithPrefix = IsWebsiteUrlWithPrefix;
2708
2714
  exports.NO_ACCESS_ROLE_KEY = NO_ACCESS_ROLE_KEY;
package/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- import { ZIP_CODE_STRING_REGEX, US_STATE_CODE_STRING_REGEX, splitJoinRemainder, filterFalsyAndEmptyValues, isolateWebsitePathFunction, toRelativeSlashPathStartType, addPrefix, hasWebsiteDomain, toAbsoluteSlashPathStartType, removeHttpFromUrl, forEachKeyValue, iterableToArray, arrayToObject, splitCommaSeparatedString, mapPromiseOrValue, isISO8601DayString, isMinuteOfDay, isE164PhoneNumber, isE164PhoneNumberWithExtension, isWebsiteUrl, isWebsiteUrlWithPrefix } from '@dereekb/util';
1
+ import { ZIP_CODE_STRING_REGEX, US_STATE_CODE_STRING_REGEX, splitJoinRemainder, filterFalsyAndEmptyValues, isolateWebsitePathFunction, toRelativeSlashPathStartType, addPrefix, hasWebsiteDomain, toAbsoluteSlashPathStartType, removeHttpFromUrl, forEachKeyValue, iterableToArray, arrayToObject, splitCommaSeparatedString, mapPromiseOrValue, isISO8601DayString, isMinuteOfDay, isE164PhoneNumber, isE164PhoneNumberWithExtension, isUniqueKeyedFunction, isWebsiteUrl, isWebsiteUrlWithPrefix } from '@dereekb/util';
2
2
  import { Expose, Transform, plainToInstance } from 'class-transformer';
3
- import { IsString, IsNotEmpty, MaxLength, IsOptional, Matches, MinLength, validate, registerDecorator } from 'class-validator';
3
+ import { IsString, IsNotEmpty, MaxLength, IsOptional, Matches, MinLength, validate, registerDecorator, buildMessage } from 'class-validator';
4
4
 
5
5
  function _initializerDefineProperty(target, property, descriptor, context) {
6
6
  if (!descriptor) return;
@@ -3875,9 +3875,7 @@ function IsISO8601DayString(validationOptions) {
3875
3875
  options: validationOptions,
3876
3876
  validator: {
3877
3877
  validate: isISO8601DayString,
3878
- defaultMessage(args) {
3879
- return `"${args.value}" is not a ISO8601DayString.`;
3880
- }
3878
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args == null ? void 0 : args.value}" is not a ISO8601DayString.`, validationOptions)
3881
3879
  }
3882
3880
  });
3883
3881
  };
@@ -3895,9 +3893,7 @@ function IsMinuteOfDay(validationOptions) {
3895
3893
  options: validationOptions,
3896
3894
  validator: {
3897
3895
  validate: isMinuteOfDay,
3898
- defaultMessage(args) {
3899
- return `"${args.value}" is not a valid minute of the day.`;
3900
- }
3896
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args == null ? void 0 : args.value}" is not a valid minute of the day.`, validationOptions)
3901
3897
  }
3902
3898
  });
3903
3899
  };
@@ -3915,9 +3911,7 @@ function IsE164PhoneNumber(validationOptions) {
3915
3911
  options: validationOptions,
3916
3912
  validator: {
3917
3913
  validate: x => isE164PhoneNumber(x, false),
3918
- defaultMessage(args) {
3919
- return `"${args.value}" is not a E164PhoneNumber with no extension.`;
3920
- }
3914
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args == null ? void 0 : args.value}" is not a E164PhoneNumber with no extension.`, validationOptions)
3921
3915
  }
3922
3916
  });
3923
3917
  };
@@ -3938,9 +3932,7 @@ function IsE164PhoneNumberWithOptionalExtension(validationOptions) {
3938
3932
  options: validationOptions,
3939
3933
  validator: {
3940
3934
  validate: x => isE164PhoneNumber(x, true),
3941
- defaultMessage(args) {
3942
- return `"${args.value}" is not an E164PhoneNumber or has an invalid extension.`;
3943
- }
3935
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args == null ? void 0 : args.value}" is not an E164PhoneNumber or has an invalid extension.`, validationOptions)
3944
3936
  }
3945
3937
  });
3946
3938
  };
@@ -3961,9 +3953,26 @@ function IsE164PhoneNumberWithExtension(validationOptions) {
3961
3953
  options: validationOptions,
3962
3954
  validator: {
3963
3955
  validate: isE164PhoneNumberWithExtension,
3964
- defaultMessage(args) {
3965
- return `"${args.value}" is not a E164PhoneNumberWithExtension.`;
3966
- }
3956
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args == null ? void 0 : args.value}" is not a E164PhoneNumberWithExtension.`, validationOptions)
3957
+ }
3958
+ });
3959
+ };
3960
+ }
3961
+
3962
+ /**
3963
+ * isUniqueKeyedFunction validator
3964
+ */
3965
+ function IsUniqueKeyed(readKey, validationOptions) {
3966
+ const isUniqueKeyed = isUniqueKeyedFunction(readKey);
3967
+ return function (object, propertyName) {
3968
+ registerDecorator({
3969
+ name: 'isUniqueKeyed',
3970
+ target: object.constructor,
3971
+ propertyName: propertyName,
3972
+ options: validationOptions,
3973
+ validator: {
3974
+ validate: isUniqueKeyed,
3975
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value has one or more values with the same key. Keys must be unique.`, validationOptions)
3967
3976
  }
3968
3977
  });
3969
3978
  };
@@ -3981,9 +3990,7 @@ function IsWebsiteUrl(validationOptions) {
3981
3990
  options: validationOptions,
3982
3991
  validator: {
3983
3992
  validate: isWebsiteUrl,
3984
- defaultMessage(args) {
3985
- return `"${args.value}" is not a valid website url`;
3986
- }
3993
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args == null ? void 0 : args.value}" is not a valid website url.`, validationOptions)
3987
3994
  }
3988
3995
  });
3989
3996
  };
@@ -4001,12 +4008,10 @@ function IsWebsiteUrlWithPrefix(validationOptions) {
4001
4008
  options: validationOptions,
4002
4009
  validator: {
4003
4010
  validate: isWebsiteUrlWithPrefix,
4004
- defaultMessage(args) {
4005
- return `"${args.value}" is not a valid website url with a http/https prefix.`;
4006
- }
4011
+ defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + `$property value of "${args == null ? void 0 : args.value}" is not a valid website url that starts with a http/https prefix.`, validationOptions)
4007
4012
  }
4008
4013
  });
4009
4014
  };
4010
4015
  }
4011
4016
 
4012
- export { ADDRESS_CITY_MAX_LENGTH, ADDRESS_COUNTRY_MAX_LENGTH, ADDRESS_LINE_MAX_LENGTH, ADDRESS_STATE_CODE_MAX_LENGTH, ADDRESS_STATE_MAX_LENGTH, ADDRESS_ZIP_MAX_LENGTH, AbstractModelPermissionService, AbstractUnitedStatesAddressWithoutStateParams, CASHAPP_BASE_URL, CASHAPP_USERNAME_PREFIX, CASHAPP_WEBSITE_LINK_TYPE, EMAIL_URL_WEBSITE_LINK_TYPE, FACEBOOK_BASE_URL, FACEBOOK_WEBSITE_LINK_TYPE, FULL_ACCESS_ROLE_KEY, GRANTED_ADMIN_ROLE_KEY, GRANTED_DELETE_ROLE_KEY, GRANTED_OWNER_ROLE_KEY, GRANTED_READ_ROLE_KEY, GRANTED_SYS_ADMIN_ROLE_KEY, GRANTED_UPDATE_ROLE_KEY, GrantedRoleMapReaderInstance, INSTAGRAM_BASE_URL, INSTAGRAM_WEBSITE_LINK_TYPE, IsE164PhoneNumber, IsE164PhoneNumberWithExtension, IsE164PhoneNumberWithOptionalExtension, IsISO8601DayString, IsMinuteOfDay, IsWebsiteUrl, IsWebsiteUrlWithPrefix, NO_ACCESS_ROLE_KEY, PAYPAL_BASE_URL, PAYPAL_WEBSITE_LINK_TYPE, PHONE_URL_WEBSITE_LINK_TYPE, SNAPCHAT_BASE_URL, SNAPCHAT_WEBSITE_LINK_ISOLATE_PROFILE_ID, SNAPCHAT_WEBSITE_LINK_TYPE, SPOTIFY_BASE_URL, SPOTIFY_WEBSITE_LINK_ISOLATE_PROFILE_ID, SPOTIFY_WEBSITE_LINK_TYPE, TIKTOK_BASE_URL, TIKTOK_USERNAME_PREFIX, TIKTOK_WEBSITE_LINK_TYPE, TWITTER_BASE_URL, TWITTER_WEBSITE_LINK_TYPE, TransformCommaSeparatedNumberValueToArray, TransformCommaSeparatedStringValueToArray, TransformCommaSeparatedValueToArray, TransformStringValueToBoolean, UNKNOWN_WEBSITE_LINK_TYPE, UnitedStatesAddressWithStateCodeParams, UnitedStatesAddressWithStateStringParams, VENMO_BASE_URL, VENMO_WEBSITE_LINK_ISOLATE_PROFILE_ID, VENMO_WEBSITE_LINK_TYPE, WEBSITE_FILE_LINK_DATA_MAX_LENGTH, WEBSITE_FILE_LINK_DATA_REGEX, WEBSITE_FILE_LINK_ENCODE_SEPARATOR, WEBSITE_FILE_LINK_MIME_TYPE_MAX_LENGTH, WEBSITE_FILE_LINK_MIME_TYPE_REGEX, WEBSITE_FILE_LINK_NAME_MAX_LENGTH, WEBSITE_FILE_LINK_TYPE_MAX_LENGTH, WEBSITE_FILE_LINK_TYPE_REGEX, WEBSITE_FILE_LINK_WEBSITE_LINK_TYPE, WEBSITE_LINK_ENCODED_DATA_MAX_LENGTH, WEBSITE_LINK_ISOLATE_BASE_URL_PROFILE_ID, WEBSITE_LINK_TYPE_MAX_LENGTH, WEBSITE_LINK_TYPE_REGEX, WEBSITE_URL_WEBSITE_LINK_TYPE, WebsiteFileLink, WebsiteLink, YOUTUBE_BASE_URL, YOUTUBE_WEBSITE_LINK_ISOLATE_PROFILE_ID, YOUTUBE_WEBSITE_LINK_TYPE, cashappProfileUrl, cashappProfileUrlToWebsiteLink, contextGrantedModelRoles, decodeWebsiteLinkEncodedDataToWebsiteFileLink, emailAddressToWebsiteLink, encodeWebsiteFileLinkToWebsiteLinkEncodedData, facebookProfileUrl, facebookProfileUrlToWebsiteLink, fullAccessGrantedModelRoles, fullAccessRoleMap, grantedRoleKeysMapFromArray, grantedRoleMapReader, instagramProfileUrl, instagramProfileUrlToWebsiteLink, isFullAccessRoleMap, isGrantedAdminLevelRole, isNoAccessRoleMap, isValidWebsiteLinkType, noAccessContextGrantedModelRoles, noAccessRoleMap, paypalProfileUrl, paypalProfileUrlToWebsiteLink, phoneNumberToWebsiteLink, snapchatProfileUrl, snapchatProfileUrlToWebsiteLink, spotifyProfileUrl, spotifyProfileUrlToWebsiteLink, tiktokProfileUrl, tiktokProfileUrlToWebsiteLink, toTransformAndValidateFunctionResult, toTransformAndValidateFunctionResultFactory, transformAndValidateFunctionResultFactory, transformAndValidateObject, transformAndValidateObjectFactory, transformAndValidateObjectResult, transformAndValidateResultFactory, transformCommaSeparatedNumberValueToArray, transformCommaSeparatedStringValueToArray, transformCommaSeparatedValueToArray, transformStringToBoolean, twitterProfileUrl, twitterProfileUrlToWebsiteLink, usernameFromUsernameOrWebsiteWithBaseUrlUsername, usernameFromUsernameOrWebsiteWithOneOffBaseUrlUsername, usernameOrWebsiteUrlToWebsiteUrl, venmoProfileUrl, venmoProfileUrlToWebsiteLink, websiteFileLinkToWebsiteLink, websiteLinkToWebsiteLinkFile, websiteUrlToWebsiteLink, youtubeProfileUrl, youtubeProfileUrlToWebsiteLink };
4017
+ export { ADDRESS_CITY_MAX_LENGTH, ADDRESS_COUNTRY_MAX_LENGTH, ADDRESS_LINE_MAX_LENGTH, ADDRESS_STATE_CODE_MAX_LENGTH, ADDRESS_STATE_MAX_LENGTH, ADDRESS_ZIP_MAX_LENGTH, AbstractModelPermissionService, AbstractUnitedStatesAddressWithoutStateParams, CASHAPP_BASE_URL, CASHAPP_USERNAME_PREFIX, CASHAPP_WEBSITE_LINK_TYPE, EMAIL_URL_WEBSITE_LINK_TYPE, FACEBOOK_BASE_URL, FACEBOOK_WEBSITE_LINK_TYPE, FULL_ACCESS_ROLE_KEY, GRANTED_ADMIN_ROLE_KEY, GRANTED_DELETE_ROLE_KEY, GRANTED_OWNER_ROLE_KEY, GRANTED_READ_ROLE_KEY, GRANTED_SYS_ADMIN_ROLE_KEY, GRANTED_UPDATE_ROLE_KEY, GrantedRoleMapReaderInstance, INSTAGRAM_BASE_URL, INSTAGRAM_WEBSITE_LINK_TYPE, IsE164PhoneNumber, IsE164PhoneNumberWithExtension, IsE164PhoneNumberWithOptionalExtension, IsISO8601DayString, IsMinuteOfDay, IsUniqueKeyed, IsWebsiteUrl, IsWebsiteUrlWithPrefix, NO_ACCESS_ROLE_KEY, PAYPAL_BASE_URL, PAYPAL_WEBSITE_LINK_TYPE, PHONE_URL_WEBSITE_LINK_TYPE, SNAPCHAT_BASE_URL, SNAPCHAT_WEBSITE_LINK_ISOLATE_PROFILE_ID, SNAPCHAT_WEBSITE_LINK_TYPE, SPOTIFY_BASE_URL, SPOTIFY_WEBSITE_LINK_ISOLATE_PROFILE_ID, SPOTIFY_WEBSITE_LINK_TYPE, TIKTOK_BASE_URL, TIKTOK_USERNAME_PREFIX, TIKTOK_WEBSITE_LINK_TYPE, TWITTER_BASE_URL, TWITTER_WEBSITE_LINK_TYPE, TransformCommaSeparatedNumberValueToArray, TransformCommaSeparatedStringValueToArray, TransformCommaSeparatedValueToArray, TransformStringValueToBoolean, UNKNOWN_WEBSITE_LINK_TYPE, UnitedStatesAddressWithStateCodeParams, UnitedStatesAddressWithStateStringParams, VENMO_BASE_URL, VENMO_WEBSITE_LINK_ISOLATE_PROFILE_ID, VENMO_WEBSITE_LINK_TYPE, WEBSITE_FILE_LINK_DATA_MAX_LENGTH, WEBSITE_FILE_LINK_DATA_REGEX, WEBSITE_FILE_LINK_ENCODE_SEPARATOR, WEBSITE_FILE_LINK_MIME_TYPE_MAX_LENGTH, WEBSITE_FILE_LINK_MIME_TYPE_REGEX, WEBSITE_FILE_LINK_NAME_MAX_LENGTH, WEBSITE_FILE_LINK_TYPE_MAX_LENGTH, WEBSITE_FILE_LINK_TYPE_REGEX, WEBSITE_FILE_LINK_WEBSITE_LINK_TYPE, WEBSITE_LINK_ENCODED_DATA_MAX_LENGTH, WEBSITE_LINK_ISOLATE_BASE_URL_PROFILE_ID, WEBSITE_LINK_TYPE_MAX_LENGTH, WEBSITE_LINK_TYPE_REGEX, WEBSITE_URL_WEBSITE_LINK_TYPE, WebsiteFileLink, WebsiteLink, YOUTUBE_BASE_URL, YOUTUBE_WEBSITE_LINK_ISOLATE_PROFILE_ID, YOUTUBE_WEBSITE_LINK_TYPE, cashappProfileUrl, cashappProfileUrlToWebsiteLink, contextGrantedModelRoles, decodeWebsiteLinkEncodedDataToWebsiteFileLink, emailAddressToWebsiteLink, encodeWebsiteFileLinkToWebsiteLinkEncodedData, facebookProfileUrl, facebookProfileUrlToWebsiteLink, fullAccessGrantedModelRoles, fullAccessRoleMap, grantedRoleKeysMapFromArray, grantedRoleMapReader, instagramProfileUrl, instagramProfileUrlToWebsiteLink, isFullAccessRoleMap, isGrantedAdminLevelRole, isNoAccessRoleMap, isValidWebsiteLinkType, noAccessContextGrantedModelRoles, noAccessRoleMap, paypalProfileUrl, paypalProfileUrlToWebsiteLink, phoneNumberToWebsiteLink, snapchatProfileUrl, snapchatProfileUrlToWebsiteLink, spotifyProfileUrl, spotifyProfileUrlToWebsiteLink, tiktokProfileUrl, tiktokProfileUrlToWebsiteLink, toTransformAndValidateFunctionResult, toTransformAndValidateFunctionResultFactory, transformAndValidateFunctionResultFactory, transformAndValidateObject, transformAndValidateObjectFactory, transformAndValidateObjectResult, transformAndValidateResultFactory, transformCommaSeparatedNumberValueToArray, transformCommaSeparatedStringValueToArray, transformCommaSeparatedValueToArray, transformStringToBoolean, twitterProfileUrl, twitterProfileUrlToWebsiteLink, usernameFromUsernameOrWebsiteWithBaseUrlUsername, usernameFromUsernameOrWebsiteWithOneOffBaseUrlUsername, usernameOrWebsiteUrlToWebsiteUrl, venmoProfileUrl, venmoProfileUrlToWebsiteLink, websiteFileLinkToWebsiteLink, websiteLinkToWebsiteLinkFile, websiteUrlToWebsiteLink, youtubeProfileUrl, youtubeProfileUrlToWebsiteLink };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/model",
3
- "version": "10.1.29",
3
+ "version": "10.2.0",
4
4
  "exports": {
5
5
  ".": {
6
6
  "types": "./src/index.d.ts",
@@ -1,4 +1,5 @@
1
1
  export * from './date';
2
2
  export * from './number';
3
3
  export * from './phone';
4
+ export * from './unique';
4
5
  export * from './url';
@@ -0,0 +1,6 @@
1
+ import { type ObjectWithConstructor, type ReadKeyFunction } from '@dereekb/util';
2
+ import { type ValidationOptions } from 'class-validator';
3
+ /**
4
+ * isUniqueKeyedFunction validator
5
+ */
6
+ export declare function IsUniqueKeyed<T>(readKey: ReadKeyFunction<T>, validationOptions?: ValidationOptions): (object: ObjectWithConstructor, propertyName: string) => void;