@dereekb/model 13.12.0 → 13.12.2

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
@@ -2938,6 +2938,12 @@ function _ts_generator(thisArg, body) {
2938
2938
  return val != null && util.isISO8601DayString(val) || ctx.mustBe('a valid ISO 8601 day string');
2939
2939
  });
2940
2940
 
2941
+ /**
2942
+ * A number greater than or equal to 0.
2943
+ */ var NON_NEGATIVE_NUMBER = 'number >= 0';
2944
+ /**
2945
+ * A non-negative integer.
2946
+ */ var NON_NEGATIVE_INTEGER = 'number.integer >= 0';
2941
2947
  /**
2942
2948
  * ArkType schema for a valid minute of the day (0-1439).
2943
2949
  */ var minuteOfDayType = arktype.type('number').narrow(function(val, ctx) {
@@ -2974,6 +2980,31 @@ function _ts_generator(thisArg, body) {
2974
2980
  return val != null && util.isLatLngString(val) || ctx.mustBe('a valid lat,lng string (e.g. "30.5,-96.3")');
2975
2981
  });
2976
2982
 
2983
+ /**
2984
+ * A string with at least one character (non-empty).
2985
+ */ var NON_EMPTY_STRING = 'string > 0';
2986
+ /**
2987
+ * A valid email address string.
2988
+ */ var EMAIL_STRING = 'string.email';
2989
+ /**
2990
+ * Creates an ArkType string definition for a non-empty string with a maximum length.
2991
+ *
2992
+ * Composes {@link NON_EMPTY_STRING} with an upper-bound length constraint, producing a
2993
+ * DSL fragment that can be interpolated directly into an ArkType `type({ ... })` schema.
2994
+ *
2995
+ * @param maxLength - The maximum number of characters allowed (inclusive).
2996
+ * @returns The ArkType string definition.
2997
+ *
2998
+ * @example
2999
+ * ```ts
3000
+ * const userType = type({
3001
+ * displayName: nonEmptyStringWithMaxLength(64)
3002
+ * });
3003
+ * ```
3004
+ */ function nonEmptyStringWithMaxLength(maxLength) {
3005
+ return "".concat(NON_EMPTY_STRING, " & string <= ").concat(maxLength);
3006
+ }
3007
+
2977
3008
  /**
2978
3009
  * Creates an ArkType schema that validates an array has no duplicate keys.
2979
3010
  *
@@ -3013,6 +3044,7 @@ exports.AbstractModelPermissionService = AbstractModelPermissionService;
3013
3044
  exports.CASHAPP_BASE_URL = CASHAPP_BASE_URL;
3014
3045
  exports.CASHAPP_USERNAME_PREFIX = CASHAPP_USERNAME_PREFIX;
3015
3046
  exports.CASHAPP_WEBSITE_LINK_TYPE = CASHAPP_WEBSITE_LINK_TYPE;
3047
+ exports.EMAIL_STRING = EMAIL_STRING;
3016
3048
  exports.EMAIL_URL_WEBSITE_LINK_TYPE = EMAIL_URL_WEBSITE_LINK_TYPE;
3017
3049
  exports.EMPTY_ARKTYPE_TYPE = EMPTY_ARKTYPE_TYPE;
3018
3050
  exports.FACEBOOK_BASE_URL = FACEBOOK_BASE_URL;
@@ -3027,6 +3059,9 @@ exports.GRANTED_UPDATE_ROLE_KEY = GRANTED_UPDATE_ROLE_KEY;
3027
3059
  exports.GrantedRoleMapReaderInstance = GrantedRoleMapReaderInstance;
3028
3060
  exports.INSTAGRAM_BASE_URL = INSTAGRAM_BASE_URL;
3029
3061
  exports.INSTAGRAM_WEBSITE_LINK_TYPE = INSTAGRAM_WEBSITE_LINK_TYPE;
3062
+ exports.NON_EMPTY_STRING = NON_EMPTY_STRING;
3063
+ exports.NON_NEGATIVE_INTEGER = NON_NEGATIVE_INTEGER;
3064
+ exports.NON_NEGATIVE_NUMBER = NON_NEGATIVE_NUMBER;
3030
3065
  exports.NO_ACCESS_ROLE_KEY = NO_ACCESS_ROLE_KEY;
3031
3066
  exports.PAYPAL_BASE_URL = PAYPAL_BASE_URL;
3032
3067
  exports.PAYPAL_WEBSITE_LINK_TYPE = PAYPAL_WEBSITE_LINK_TYPE;
@@ -3096,6 +3131,7 @@ exports.modelIdType = modelIdType;
3096
3131
  exports.modelKeyType = modelKeyType;
3097
3132
  exports.noAccessContextGrantedModelRoles = noAccessContextGrantedModelRoles;
3098
3133
  exports.noAccessRoleMap = noAccessRoleMap;
3134
+ exports.nonEmptyStringWithMaxLength = nonEmptyStringWithMaxLength;
3099
3135
  exports.paypalProfileUrl = paypalProfileUrl;
3100
3136
  exports.paypalProfileUrlToWebsiteLink = paypalProfileUrlToWebsiteLink;
3101
3137
  exports.phoneNumberToWebsiteLink = phoneNumberToWebsiteLink;
package/index.esm.js CHANGED
@@ -2936,6 +2936,12 @@ function _ts_generator(thisArg, body) {
2936
2936
  return val != null && isISO8601DayString(val) || ctx.mustBe('a valid ISO 8601 day string');
2937
2937
  });
2938
2938
 
2939
+ /**
2940
+ * A number greater than or equal to 0.
2941
+ */ var NON_NEGATIVE_NUMBER = 'number >= 0';
2942
+ /**
2943
+ * A non-negative integer.
2944
+ */ var NON_NEGATIVE_INTEGER = 'number.integer >= 0';
2939
2945
  /**
2940
2946
  * ArkType schema for a valid minute of the day (0-1439).
2941
2947
  */ var minuteOfDayType = type('number').narrow(function(val, ctx) {
@@ -2972,6 +2978,31 @@ function _ts_generator(thisArg, body) {
2972
2978
  return val != null && isLatLngString(val) || ctx.mustBe('a valid lat,lng string (e.g. "30.5,-96.3")');
2973
2979
  });
2974
2980
 
2981
+ /**
2982
+ * A string with at least one character (non-empty).
2983
+ */ var NON_EMPTY_STRING = 'string > 0';
2984
+ /**
2985
+ * A valid email address string.
2986
+ */ var EMAIL_STRING = 'string.email';
2987
+ /**
2988
+ * Creates an ArkType string definition for a non-empty string with a maximum length.
2989
+ *
2990
+ * Composes {@link NON_EMPTY_STRING} with an upper-bound length constraint, producing a
2991
+ * DSL fragment that can be interpolated directly into an ArkType `type({ ... })` schema.
2992
+ *
2993
+ * @param maxLength - The maximum number of characters allowed (inclusive).
2994
+ * @returns The ArkType string definition.
2995
+ *
2996
+ * @example
2997
+ * ```ts
2998
+ * const userType = type({
2999
+ * displayName: nonEmptyStringWithMaxLength(64)
3000
+ * });
3001
+ * ```
3002
+ */ function nonEmptyStringWithMaxLength(maxLength) {
3003
+ return "".concat(NON_EMPTY_STRING, " & string <= ").concat(maxLength);
3004
+ }
3005
+
2975
3006
  /**
2976
3007
  * Creates an ArkType schema that validates an array has no duplicate keys.
2977
3008
  *
@@ -3000,4 +3031,4 @@ function _ts_generator(thisArg, body) {
3000
3031
  return val != null && isWebsiteUrlWithPrefix(val) || ctx.mustBe('a valid website URL starting with http:// or https://');
3001
3032
  });
3002
3033
 
3003
- 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, ARKTYPE_DATE_DTO_TYPE, AbstractModelPermissionService, CASHAPP_BASE_URL, CASHAPP_USERNAME_PREFIX, CASHAPP_WEBSITE_LINK_TYPE, EMAIL_URL_WEBSITE_LINK_TYPE, EMPTY_ARKTYPE_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, 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, UNKNOWN_WEBSITE_LINK_TYPE, 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, YOUTUBE_BASE_URL, YOUTUBE_WEBSITE_LINK_ISOLATE_PROFILE_ID, YOUTUBE_WEBSITE_LINK_TYPE, arktypeToJsonSchemaForExport, basicSyncEntityCommonTypeSynchronizerInstanceFactory, cashappProfileUrl, cashappProfileUrlToWebsiteLink, clearable, contextGrantedModelRoles, decodeWebsiteLinkEncodedDataToWebsiteFileLink, e164PhoneNumberType, e164PhoneNumberWithExtensionType, e164PhoneNumberWithOptionalExtensionType, emailAddressToWebsiteLink, emptyType, encodeWebsiteFileLinkToWebsiteLinkEncodedData, facebookProfileUrl, facebookProfileUrlToWebsiteLink, fullAccessGrantedModelRoles, fullAccessRoleMap, grantedRoleKeysMapFromArray, grantedRoleMapReader, instagramProfileUrl, instagramProfileUrlToWebsiteLink, isFullAccessRoleMap, isGrantedAdminLevelRole, isNoAccessRoleMap, isValidWebsiteLinkType, iso8601DayStringType, latLngPointType, latLngStringType, minuteOfDayType, modelIdType, modelKeyType, noAccessContextGrantedModelRoles, noAccessRoleMap, paypalProfileUrl, paypalProfileUrlToWebsiteLink, phoneNumberToWebsiteLink, pruneFalseUnionBranches, snapchatProfileUrl, snapchatProfileUrlToWebsiteLink, spotifyProfileUrl, spotifyProfileUrlToWebsiteLink, syncEntityCommonTypeIdPairFactory, syncEntityFactory, syncEntitySynchronizer, targetModelIdParamsType, targetModelParamsType, tiktokProfileUrl, tiktokProfileUrlToWebsiteLink, toTransformAndValidateFunctionResult, toTransformAndValidateFunctionResultFactory, transformAndValidateFunctionResultFactory, transformAndValidateObject, transformAndValidateObjectFactory, transformAndValidateObjectResult, transformAndValidateResultFactory, twitterProfileUrl, twitterProfileUrlToWebsiteLink, uniqueKeyedType, unitedStatesAddressWithStateCodeType, unitedStatesAddressWithStateStringType, usernameFromUsernameOrWebsiteWithBaseUrlUsername, usernameFromUsernameOrWebsiteWithOneOffBaseUrlUsername, usernameOrWebsiteUrlToWebsiteUrl, venmoProfileUrl, venmoProfileUrlToWebsiteLink, websiteFileLinkToWebsiteLink, websiteFileLinkType, websiteLinkToWebsiteLinkFile, websiteLinkType, websiteUrlToWebsiteLink, websiteUrlType, websiteUrlWithPrefixType, youtubeProfileUrl, youtubeProfileUrlToWebsiteLink };
3034
+ 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, ARKTYPE_DATE_DTO_TYPE, AbstractModelPermissionService, CASHAPP_BASE_URL, CASHAPP_USERNAME_PREFIX, CASHAPP_WEBSITE_LINK_TYPE, EMAIL_STRING, EMAIL_URL_WEBSITE_LINK_TYPE, EMPTY_ARKTYPE_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, NON_EMPTY_STRING, NON_NEGATIVE_INTEGER, NON_NEGATIVE_NUMBER, 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, UNKNOWN_WEBSITE_LINK_TYPE, 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, YOUTUBE_BASE_URL, YOUTUBE_WEBSITE_LINK_ISOLATE_PROFILE_ID, YOUTUBE_WEBSITE_LINK_TYPE, arktypeToJsonSchemaForExport, basicSyncEntityCommonTypeSynchronizerInstanceFactory, cashappProfileUrl, cashappProfileUrlToWebsiteLink, clearable, contextGrantedModelRoles, decodeWebsiteLinkEncodedDataToWebsiteFileLink, e164PhoneNumberType, e164PhoneNumberWithExtensionType, e164PhoneNumberWithOptionalExtensionType, emailAddressToWebsiteLink, emptyType, encodeWebsiteFileLinkToWebsiteLinkEncodedData, facebookProfileUrl, facebookProfileUrlToWebsiteLink, fullAccessGrantedModelRoles, fullAccessRoleMap, grantedRoleKeysMapFromArray, grantedRoleMapReader, instagramProfileUrl, instagramProfileUrlToWebsiteLink, isFullAccessRoleMap, isGrantedAdminLevelRole, isNoAccessRoleMap, isValidWebsiteLinkType, iso8601DayStringType, latLngPointType, latLngStringType, minuteOfDayType, modelIdType, modelKeyType, noAccessContextGrantedModelRoles, noAccessRoleMap, nonEmptyStringWithMaxLength, paypalProfileUrl, paypalProfileUrlToWebsiteLink, phoneNumberToWebsiteLink, pruneFalseUnionBranches, snapchatProfileUrl, snapchatProfileUrlToWebsiteLink, spotifyProfileUrl, spotifyProfileUrlToWebsiteLink, syncEntityCommonTypeIdPairFactory, syncEntityFactory, syncEntitySynchronizer, targetModelIdParamsType, targetModelParamsType, tiktokProfileUrl, tiktokProfileUrlToWebsiteLink, toTransformAndValidateFunctionResult, toTransformAndValidateFunctionResultFactory, transformAndValidateFunctionResultFactory, transformAndValidateObject, transformAndValidateObjectFactory, transformAndValidateObjectResult, transformAndValidateResultFactory, twitterProfileUrl, twitterProfileUrlToWebsiteLink, uniqueKeyedType, unitedStatesAddressWithStateCodeType, unitedStatesAddressWithStateStringType, usernameFromUsernameOrWebsiteWithBaseUrlUsername, usernameFromUsernameOrWebsiteWithOneOffBaseUrlUsername, usernameOrWebsiteUrlToWebsiteUrl, venmoProfileUrl, venmoProfileUrlToWebsiteLink, websiteFileLinkToWebsiteLink, websiteFileLinkType, websiteLinkToWebsiteLinkFile, websiteLinkType, websiteUrlToWebsiteLink, websiteUrlType, websiteUrlWithPrefixType, youtubeProfileUrl, youtubeProfileUrlToWebsiteLink };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@dereekb/model",
3
- "version": "13.12.0",
3
+ "version": "13.12.2",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@dereekb/util": "13.12.0",
6
+ "@dereekb/util": "13.12.2",
7
7
  "arktype": "^2.2.0",
8
8
  "make-error": "^1.3.6"
9
9
  },
@@ -2,5 +2,6 @@ export * from './date';
2
2
  export * from './number';
3
3
  export * from './phone';
4
4
  export * from './point';
5
+ export * from './string';
5
6
  export * from './unique';
6
7
  export * from './url';
@@ -1,3 +1,11 @@
1
+ /**
2
+ * A number greater than or equal to 0.
3
+ */
4
+ export declare const NON_NEGATIVE_NUMBER: "number >= 0";
5
+ /**
6
+ * A non-negative integer.
7
+ */
8
+ export declare const NON_NEGATIVE_INTEGER: "number.integer >= 0";
1
9
  /**
2
10
  * ArkType schema for a valid minute of the day (0-1439).
3
11
  */
@@ -0,0 +1,25 @@
1
+ /**
2
+ * A string with at least one character (non-empty).
3
+ */
4
+ export declare const NON_EMPTY_STRING: "string > 0";
5
+ /**
6
+ * A valid email address string.
7
+ */
8
+ export declare const EMAIL_STRING: "string.email";
9
+ /**
10
+ * Creates an ArkType string definition for a non-empty string with a maximum length.
11
+ *
12
+ * Composes {@link NON_EMPTY_STRING} with an upper-bound length constraint, producing a
13
+ * DSL fragment that can be interpolated directly into an ArkType `type({ ... })` schema.
14
+ *
15
+ * @param maxLength - The maximum number of characters allowed (inclusive).
16
+ * @returns The ArkType string definition.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const userType = type({
21
+ * displayName: nonEmptyStringWithMaxLength(64)
22
+ * });
23
+ * ```
24
+ */
25
+ export declare function nonEmptyStringWithMaxLength<N extends number>(maxLength: N): `string > 0 & string <= ${N}`;