stringzy 2.2.1 → 4.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.
Files changed (190) hide show
  1. package/.github/workflows/publish.yml +29 -0
  2. package/.github/workflows/test-on-pr.yml +23 -0
  3. package/.prettierignore +4 -0
  4. package/.prettierrc +7 -0
  5. package/CONTRIBUTING.md +99 -0
  6. package/LICENSE +21 -21
  7. package/README.md +1189 -723
  8. package/changelog.txt +110 -110
  9. package/dist/analyzing/characterCount.d.ts +20 -0
  10. package/dist/analyzing/characterCount.js +28 -0
  11. package/dist/analyzing/characterFrequency.d.ts +20 -0
  12. package/dist/analyzing/characterFrequency.js +35 -0
  13. package/dist/analyzing/complexity.d.ts +39 -0
  14. package/dist/analyzing/complexity.js +63 -0
  15. package/dist/analyzing/index.d.ts +26 -0
  16. package/dist/analyzing/index.js +37 -0
  17. package/dist/analyzing/patternCount.d.ts +10 -0
  18. package/dist/analyzing/patternCount.js +52 -0
  19. package/dist/analyzing/readingDuration.d.ts +10 -0
  20. package/dist/analyzing/readingDuration.js +17 -0
  21. package/dist/analyzing/stringSimilarity.d.ts +8 -0
  22. package/dist/analyzing/stringSimilarity.js +145 -0
  23. package/dist/analyzing/vowelConsonantCount.d.ts +22 -0
  24. package/dist/analyzing/vowelConsonantCount.js +38 -0
  25. package/dist/analyzing/wordCount.d.ts +23 -0
  26. package/dist/analyzing/wordCount.js +33 -0
  27. package/dist/formatting/capitalize.d.ts +22 -0
  28. package/dist/formatting/capitalize.js +33 -0
  29. package/dist/formatting/index.d.ts +11 -0
  30. package/dist/formatting/index.js +17 -0
  31. package/dist/formatting/number.d.ts +24 -0
  32. package/dist/formatting/number.js +30 -0
  33. package/dist/formatting/phone.d.ts +25 -0
  34. package/dist/formatting/phone.js +48 -0
  35. package/dist/index.d.ts +52 -0
  36. package/dist/index.js +30 -0
  37. package/dist/tests/analyzing/characterCount.test.d.ts +1 -0
  38. package/dist/tests/analyzing/characterCount.test.js +19 -0
  39. package/dist/tests/analyzing/characterFrequency.test.d.ts +1 -0
  40. package/dist/tests/analyzing/characterFrequency.test.js +22 -0
  41. package/dist/tests/analyzing/complexity.test.d.ts +1 -0
  42. package/dist/tests/analyzing/complexity.test.js +28 -0
  43. package/dist/tests/analyzing/patternCount.test.d.ts +1 -0
  44. package/dist/tests/analyzing/patternCount.test.js +34 -0
  45. package/dist/tests/analyzing/readingDuration.test.d.ts +1 -0
  46. package/dist/tests/analyzing/readingDuration.test.js +45 -0
  47. package/dist/tests/analyzing/stringSimilarity.test.d.ts +1 -0
  48. package/dist/tests/analyzing/stringSimilarity.test.js +61 -0
  49. package/dist/tests/analyzing/vowelConsonantCount.test.d.ts +1 -0
  50. package/dist/tests/analyzing/vowelConsonantCount.test.js +25 -0
  51. package/dist/tests/analyzing/wordCount.test.d.ts +1 -0
  52. package/dist/tests/analyzing/wordCount.test.js +22 -0
  53. package/dist/tests/formatting/capitalize.test.d.ts +1 -0
  54. package/dist/tests/formatting/capitalize.test.js +22 -0
  55. package/dist/tests/formatting/number.test.d.ts +1 -0
  56. package/dist/tests/formatting/number.test.js +19 -0
  57. package/dist/tests/formatting/phone.test.d.ts +1 -0
  58. package/dist/tests/formatting/phone.test.js +25 -0
  59. package/dist/tests/transformations/camelCase.test.d.ts +1 -0
  60. package/dist/tests/transformations/camelCase.test.js +19 -0
  61. package/dist/tests/transformations/capitalizeWords.test.d.ts +1 -0
  62. package/dist/tests/transformations/capitalizeWords.test.js +19 -0
  63. package/dist/tests/transformations/constantCase.test.d.ts +1 -0
  64. package/dist/tests/transformations/constantCase.test.js +19 -0
  65. package/dist/tests/transformations/deburr.test.d.ts +1 -0
  66. package/dist/tests/transformations/deburr.test.js +27 -0
  67. package/dist/tests/transformations/escapeHTML.test.d.ts +1 -0
  68. package/dist/tests/transformations/escapeHTML.test.js +46 -0
  69. package/dist/tests/transformations/initials.test.d.ts +1 -0
  70. package/dist/tests/transformations/initials.test.js +25 -0
  71. package/dist/tests/transformations/kebabCase.test.d.ts +1 -0
  72. package/dist/tests/transformations/kebabCase.test.js +19 -0
  73. package/dist/tests/transformations/maskSegment.test.d.ts +1 -0
  74. package/dist/tests/transformations/maskSegment.test.js +30 -0
  75. package/dist/tests/transformations/numberToText.test.d.ts +1 -0
  76. package/dist/tests/transformations/numberToText.test.js +60 -0
  77. package/dist/tests/transformations/pascalCase.test.d.ts +1 -0
  78. package/dist/tests/transformations/pascalCase.test.js +19 -0
  79. package/dist/tests/transformations/removeDuplicates.test.d.ts +1 -0
  80. package/dist/tests/transformations/removeDuplicates.test.js +19 -0
  81. package/dist/tests/transformations/removeSpecialChars.test.d.ts +1 -0
  82. package/dist/tests/transformations/removeSpecialChars.test.js +22 -0
  83. package/dist/tests/transformations/removeWords.test.d.ts +1 -0
  84. package/dist/tests/transformations/removeWords.test.js +25 -0
  85. package/dist/tests/transformations/snakeCase.test.d.ts +1 -0
  86. package/dist/tests/transformations/snakeCase.test.js +19 -0
  87. package/dist/tests/transformations/splitChunks.test.d.ts +1 -0
  88. package/dist/tests/transformations/splitChunks.test.js +31 -0
  89. package/dist/tests/transformations/titleCase.test.d.ts +1 -0
  90. package/dist/tests/transformations/titleCase.test.js +19 -0
  91. package/dist/tests/transformations/toSlug.test.d.ts +1 -0
  92. package/dist/tests/transformations/toSlug.test.js +22 -0
  93. package/dist/tests/transformations/truncateText.test.d.ts +1 -0
  94. package/dist/tests/transformations/truncateText.test.js +31 -0
  95. package/dist/tests/validations/isCoordinates.test.d.ts +1 -0
  96. package/dist/tests/validations/isCoordinates.test.js +18 -0
  97. package/dist/tests/validations/isDate.test.d.ts +1 -0
  98. package/dist/tests/validations/isDate.test.js +55 -0
  99. package/dist/tests/validations/isEmail.smtpUTF8.test.d.ts +1 -0
  100. package/dist/tests/validations/isEmail.smtpUTF8.test.js +16 -0
  101. package/dist/tests/validations/isEmail.test.d.ts +1 -0
  102. package/dist/tests/validations/isEmail.test.js +67 -0
  103. package/dist/tests/validations/isEmpty.test.d.ts +1 -0
  104. package/dist/tests/validations/isEmpty.test.js +19 -0
  105. package/dist/tests/validations/isHexColor.test.d.ts +1 -0
  106. package/dist/tests/validations/isHexColor.test.js +32 -0
  107. package/dist/tests/validations/isIPv4.test.d.ts +1 -0
  108. package/dist/tests/validations/isIPv4.test.js +59 -0
  109. package/dist/tests/validations/isPalindrome.test.d.ts +1 -0
  110. package/dist/tests/validations/isPalindrome.test.js +39 -0
  111. package/dist/tests/validations/isSlug.test.d.ts +1 -0
  112. package/dist/tests/validations/isSlug.test.js +22 -0
  113. package/dist/tests/validations/isTypeOf.test.d.ts +1 -0
  114. package/dist/tests/validations/isTypeOf.test.js +28 -0
  115. package/dist/tests/validations/isURL.test.d.ts +1 -0
  116. package/dist/tests/validations/isURL.test.js +18 -0
  117. package/dist/transformations/camelCase.d.ts +25 -0
  118. package/dist/transformations/camelCase.js +39 -0
  119. package/dist/transformations/capitalizeWords.d.ts +22 -0
  120. package/dist/transformations/capitalizeWords.js +30 -0
  121. package/dist/transformations/constantCase.d.ts +27 -0
  122. package/dist/transformations/constantCase.js +41 -0
  123. package/dist/transformations/deburr.d.ts +7 -0
  124. package/dist/transformations/deburr.js +16 -0
  125. package/dist/transformations/escapeHTML.d.ts +24 -0
  126. package/dist/transformations/escapeHTML.js +36 -0
  127. package/dist/transformations/index.d.ts +52 -0
  128. package/dist/transformations/index.js +71 -0
  129. package/dist/transformations/initials.d.ts +28 -0
  130. package/dist/transformations/initials.js +49 -0
  131. package/dist/transformations/kebabCase.d.ts +27 -0
  132. package/dist/transformations/kebabCase.js +41 -0
  133. package/dist/transformations/maskSegment.d.ts +9 -0
  134. package/dist/transformations/maskSegment.js +23 -0
  135. package/dist/transformations/numberToText/helpers.d.ts +10 -0
  136. package/dist/transformations/numberToText/helpers.js +31 -0
  137. package/dist/transformations/numberToText/implementation_EN.d.ts +10 -0
  138. package/dist/transformations/numberToText/implementation_EN.js +45 -0
  139. package/dist/transformations/numberToText/implementation_PL.d.ts +10 -0
  140. package/dist/transformations/numberToText/implementation_PL.js +79 -0
  141. package/dist/transformations/numberToText/main.d.ts +19 -0
  142. package/dist/transformations/numberToText/main.js +67 -0
  143. package/dist/transformations/numberToText/types.d.ts +3 -0
  144. package/dist/transformations/numberToText/types.js +82 -0
  145. package/dist/transformations/pascalCase.d.ts +26 -0
  146. package/dist/transformations/pascalCase.js +40 -0
  147. package/dist/transformations/removeDuplicates.d.ts +22 -0
  148. package/dist/transformations/removeDuplicates.js +34 -0
  149. package/dist/transformations/removeSpecialChars.d.ts +23 -0
  150. package/dist/transformations/removeSpecialChars.js +34 -0
  151. package/dist/transformations/removeWords.d.ts +28 -0
  152. package/dist/transformations/removeWords.js +50 -0
  153. package/dist/transformations/snakeCase.d.ts +27 -0
  154. package/dist/transformations/snakeCase.js +41 -0
  155. package/dist/transformations/splitChunks.d.ts +8 -0
  156. package/dist/transformations/splitChunks.js +24 -0
  157. package/dist/transformations/titleCase.d.ts +26 -0
  158. package/dist/transformations/titleCase.js +39 -0
  159. package/dist/transformations/toSlug.d.ts +25 -0
  160. package/dist/transformations/toSlug.js +37 -0
  161. package/dist/transformations/truncateText.d.ts +26 -0
  162. package/dist/transformations/truncateText.js +44 -0
  163. package/dist/validations/index.d.ts +29 -0
  164. package/dist/validations/index.js +41 -0
  165. package/dist/validations/isCoordinates.d.ts +8 -0
  166. package/dist/validations/isCoordinates.js +19 -0
  167. package/dist/validations/isDate.d.ts +18 -0
  168. package/dist/validations/isDate.js +61 -0
  169. package/dist/validations/isEmail.d.ts +13 -0
  170. package/dist/validations/isEmail.js +180 -0
  171. package/dist/validations/isEmpty.d.ts +10 -0
  172. package/dist/validations/isEmpty.js +15 -0
  173. package/dist/validations/isHexColor.d.ts +7 -0
  174. package/dist/validations/isHexColor.js +15 -0
  175. package/dist/validations/isIPv4.d.ts +22 -0
  176. package/dist/validations/isIPv4.js +33 -0
  177. package/dist/validations/isPalindrome.d.ts +10 -0
  178. package/dist/validations/isPalindrome.js +21 -0
  179. package/dist/validations/isSlug.d.ts +28 -0
  180. package/dist/validations/isSlug.js +37 -0
  181. package/dist/validations/isTypeOf.d.ts +9 -0
  182. package/dist/validations/isTypeOf.js +30 -0
  183. package/dist/validations/isURL.d.ts +22 -0
  184. package/dist/validations/isURL.js +33 -0
  185. package/package.json +12 -4
  186. package/analysis.js +0 -21
  187. package/formatting.js +0 -37
  188. package/index.js +0 -75
  189. package/transformations.js +0 -190
  190. package/validations.js +0 -80
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const removeDuplicates_1 = require("../../transformations/removeDuplicates");
9
+ (0, node_test_1.describe)('removeDuplicates', () => {
10
+ (0, node_test_1.it)('removes duplicate words', () => {
11
+ node_assert_1.default.strictEqual((0, removeDuplicates_1.removeDuplicates)('foo bar foo'), 'foo bar');
12
+ });
13
+ (0, node_test_1.it)('returns input if no duplicates', () => {
14
+ node_assert_1.default.strictEqual((0, removeDuplicates_1.removeDuplicates)('foo bar'), 'foo bar');
15
+ });
16
+ (0, node_test_1.it)('throws if input is not a string', () => {
17
+ node_assert_1.default.throws(() => (0, removeDuplicates_1.removeDuplicates)(123), /Input must be a string/);
18
+ });
19
+ });
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const removeSpecialChars_1 = require("../../transformations/removeSpecialChars");
9
+ (0, node_test_1.describe)('removeSpecialChars', () => {
10
+ (0, node_test_1.it)('removes special characters', () => {
11
+ node_assert_1.default.strictEqual((0, removeSpecialChars_1.removeSpecialChars)('hello@world!'), 'helloworld');
12
+ });
13
+ (0, node_test_1.it)('replaces special characters with custom string', () => {
14
+ node_assert_1.default.strictEqual((0, removeSpecialChars_1.removeSpecialChars)('hello@world!', '-'), 'hello-world-');
15
+ });
16
+ (0, node_test_1.it)('throws if input is not a string', () => {
17
+ node_assert_1.default.throws(() => (0, removeSpecialChars_1.removeSpecialChars)(123), /Invalid argument/);
18
+ });
19
+ (0, node_test_1.it)('throws if replacement is not a string', () => {
20
+ node_assert_1.default.throws(() => (0, removeSpecialChars_1.removeSpecialChars)('abc', 123), /Replacement must be a string/);
21
+ });
22
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const removeWords_1 = require("../../transformations/removeWords");
9
+ (0, node_test_1.describe)('removeWords', () => {
10
+ (0, node_test_1.it)('removes a single word', () => {
11
+ node_assert_1.default.strictEqual((0, removeWords_1.removeWords)('hello world', 'world'), 'hello');
12
+ });
13
+ (0, node_test_1.it)('removes multiple words', () => {
14
+ node_assert_1.default.strictEqual((0, removeWords_1.removeWords)('foo bar baz', ['bar', 'baz']), 'foo');
15
+ });
16
+ (0, node_test_1.it)('returns empty string for empty input', () => {
17
+ node_assert_1.default.strictEqual((0, removeWords_1.removeWords)('', 'foo'), '');
18
+ });
19
+ (0, node_test_1.it)('throws if input is not a string', () => {
20
+ node_assert_1.default.throws(() => (0, removeWords_1.removeWords)(123, 'foo'), /First parameter must be a string/);
21
+ });
22
+ (0, node_test_1.it)('throws if wordsToRemove is not string or array', () => {
23
+ node_assert_1.default.throws(() => (0, removeWords_1.removeWords)('foo', 123), /Second parameter must be a string or an array/);
24
+ });
25
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const snakeCase_1 = require("../../transformations/snakeCase");
9
+ (0, node_test_1.describe)('snakeCase', () => {
10
+ (0, node_test_1.it)('converts text to snake_case', () => {
11
+ node_assert_1.default.strictEqual((0, snakeCase_1.snakeCase)('hello world'), 'hello_world');
12
+ });
13
+ (0, node_test_1.it)('handles camelCase', () => {
14
+ node_assert_1.default.strictEqual((0, snakeCase_1.snakeCase)('helloWorld'), 'hello_world');
15
+ });
16
+ (0, node_test_1.it)('returns empty string for null', () => {
17
+ node_assert_1.default.strictEqual((0, snakeCase_1.snakeCase)(null), '');
18
+ });
19
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const splitChunks_1 = require("../../transformations/splitChunks");
9
+ (0, node_test_1.describe)('splitChunks', () => {
10
+ (0, node_test_1.it)('creates chunks of size 3', () => {
11
+ node_assert_1.default.deepStrictEqual((0, splitChunks_1.splitChunks)('hello world', 3), ['hel', 'lo ', 'wor', 'ld']);
12
+ });
13
+ (0, node_test_1.it)('creates chunks of size 2', () => {
14
+ node_assert_1.default.deepStrictEqual((0, splitChunks_1.splitChunks)('hello world', 2), ['he', 'll', 'o ', 'wo', 'rl', 'd']);
15
+ });
16
+ (0, node_test_1.it)('creates chunks of size 1', () => {
17
+ node_assert_1.default.deepStrictEqual((0, splitChunks_1.splitChunks)('hello world'), [
18
+ 'h',
19
+ 'e',
20
+ 'l',
21
+ 'l',
22
+ 'o',
23
+ ' ',
24
+ 'w',
25
+ 'o',
26
+ 'r',
27
+ 'l',
28
+ 'd',
29
+ ]);
30
+ });
31
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const titleCase_1 = require("../../transformations/titleCase");
9
+ (0, node_test_1.describe)('titleCase', () => {
10
+ (0, node_test_1.it)('converts text to Title Case', () => {
11
+ node_assert_1.default.strictEqual((0, titleCase_1.titleCase)('hello world'), 'Hello World');
12
+ });
13
+ (0, node_test_1.it)('handles empty string', () => {
14
+ node_assert_1.default.strictEqual((0, titleCase_1.titleCase)(''), '');
15
+ });
16
+ (0, node_test_1.it)('returns empty string for null', () => {
17
+ node_assert_1.default.strictEqual((0, titleCase_1.titleCase)(null), '');
18
+ });
19
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const toSlug_1 = require("../../transformations/toSlug");
9
+ (0, node_test_1.describe)('toSlug', () => {
10
+ (0, node_test_1.it)('converts text to slug', () => {
11
+ node_assert_1.default.strictEqual((0, toSlug_1.toSlug)('Hello World!'), 'hello-world');
12
+ });
13
+ (0, node_test_1.it)('handles already slugged text', () => {
14
+ node_assert_1.default.strictEqual((0, toSlug_1.toSlug)('already-slugged'), 'already-slugged');
15
+ });
16
+ (0, node_test_1.it)('removes special characters', () => {
17
+ node_assert_1.default.strictEqual((0, toSlug_1.toSlug)('foo@bar#baz'), 'foobarbaz');
18
+ });
19
+ (0, node_test_1.it)('throws if input is not a string', () => {
20
+ node_assert_1.default.throws(() => (0, toSlug_1.toSlug)(123), /Invalid argument/);
21
+ });
22
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const truncateText_1 = require("../../transformations/truncateText");
9
+ (0, node_test_1.describe)('truncateText', () => {
10
+ (0, node_test_1.it)('returns the original text if shorter than maxLength', () => {
11
+ node_assert_1.default.strictEqual((0, truncateText_1.truncateText)('hello', 10), 'hello');
12
+ });
13
+ (0, node_test_1.it)('truncates and adds suffix if text is longer', () => {
14
+ node_assert_1.default.strictEqual((0, truncateText_1.truncateText)('hello world', 5), 'he...');
15
+ });
16
+ (0, node_test_1.it)('truncates and adds custom suffix', () => {
17
+ node_assert_1.default.strictEqual((0, truncateText_1.truncateText)('abcdef', 5, '--'), 'abc--');
18
+ });
19
+ (0, node_test_1.it)('returns only suffix if maxLength < suffix.length', () => {
20
+ node_assert_1.default.strictEqual((0, truncateText_1.truncateText)('abcdef', 2), '...');
21
+ });
22
+ (0, node_test_1.it)('throws if text is not a string', () => {
23
+ node_assert_1.default.throws(() => (0, truncateText_1.truncateText)(123, 5), /Input text must be a string/);
24
+ });
25
+ (0, node_test_1.it)('throws if maxLength is negative', () => {
26
+ node_assert_1.default.throws(() => (0, truncateText_1.truncateText)('abc', -1), /maxLength must be a non-negative number/);
27
+ });
28
+ (0, node_test_1.it)('throws if suffix is not a string', () => {
29
+ node_assert_1.default.throws(() => (0, truncateText_1.truncateText)('abc', 5, 123), /Suffix must be a string/);
30
+ });
31
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isCoordinates_1 = require("../../validations/isCoordinates");
9
+ (0, node_test_1.describe)('isCoordinates', () => {
10
+ (0, node_test_1.it)('returns true for valid coordinates', () => {
11
+ node_assert_1.default.strictEqual((0, isCoordinates_1.isCoordinates)(48.8582, 2.2945), true);
12
+ node_assert_1.default.strictEqual((0, isCoordinates_1.isCoordinates)(40.748817, -73.985428), true);
13
+ });
14
+ (0, node_test_1.it)('returns false for invalid coordinates', () => {
15
+ node_assert_1.default.strictEqual((0, isCoordinates_1.isCoordinates)(200, 200), false);
16
+ node_assert_1.default.strictEqual((0, isCoordinates_1.isCoordinates)(-200, -200), false);
17
+ });
18
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isDate_1 = require("../../validations/isDate");
9
+ (0, node_test_1.describe)('isDate', () => {
10
+ (0, node_test_1.it)('validates dates formatted as YYYY-MM-DD', () => {
11
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('2020-01-01', isDate_1.DateFormats.YYYYMMDD), true);
12
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('1999-06-22', isDate_1.DateFormats.YYYYMMDD), true);
13
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('1852-12-31', isDate_1.DateFormats.YYYYMMDD), true);
14
+ });
15
+ (0, node_test_1.it)('invalidates dates formatted as YYYY-MM-DD with out-of-range months', () => {
16
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('2020-13-31', isDate_1.DateFormats.YYYYMMDD), false);
17
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('1000-02-40', isDate_1.DateFormats.YYYYMMDD), false);
18
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('1970-15-32', isDate_1.DateFormats.YYYYMMDD), false);
19
+ });
20
+ (0, node_test_1.it)('validates dates formatted as MM-DD-YYYY', () => {
21
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('12-31-2020', isDate_1.DateFormats.MMDDYYYY), true);
22
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('02-04-1900', isDate_1.DateFormats.MMDDYYYY), true);
23
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('05-20-1820', isDate_1.DateFormats.MMDDYYYY), true);
24
+ });
25
+ (0, node_test_1.it)('invalidates dates formatted as MM-DD-YYYY', () => {
26
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('13-31-2000', isDate_1.DateFormats.MMDDYYYY), false);
27
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('02-31-1990', isDate_1.DateFormats.MMDDYYYY), false);
28
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('01-33-1970', isDate_1.DateFormats.MMDDYYYY), false);
29
+ });
30
+ (0, node_test_1.it)('validates dates formatted as DD-MM-YYYY', () => {
31
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('31-12-2020', isDate_1.DateFormats.DDMMYYYY), true);
32
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('23-01-1888', isDate_1.DateFormats.DDMMYYYY), true);
33
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('28-02-2000', isDate_1.DateFormats.DDMMYYYY), true);
34
+ });
35
+ (0, node_test_1.it)('invalidates dates formatted as DD-MM-YYYY', () => {
36
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('32-12-2020', isDate_1.DateFormats.DDMMYYYY), false);
37
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('30-02-2001', isDate_1.DateFormats.DDMMYYYY), false);
38
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('01-13-1999', isDate_1.DateFormats.DDMMYYYY), false);
39
+ });
40
+ (0, node_test_1.it)('properly handles other valid separators', () => {
41
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('2020/12/31', isDate_1.DateFormats.YYYYMMDD, '/'), true);
42
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('2020.12.31', isDate_1.DateFormats.YYYYMMDD, '.'), true);
43
+ });
44
+ (0, node_test_1.it)('properly invalidates non-valid separators', () => {
45
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('2020?12?31', isDate_1.DateFormats.YYYYMMDD, '?'), false);
46
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('2020!12!31', isDate_1.DateFormats.YYYYMMDD, '!'), false);
47
+ });
48
+ (0, node_test_1.it)('invalidates improperly formatted dates', () => {
49
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('1-01-2000', isDate_1.DateFormats.MMDDYYYY), false);
50
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('01-1-2000', isDate_1.DateFormats.MMDDYYYY), false);
51
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('01-1--2000', isDate_1.DateFormats.MMDDYYYY), false);
52
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)('not a date', isDate_1.DateFormats.MMDDYYYY), false);
53
+ node_assert_1.default.strictEqual((0, isDate_1.isDate)(11012000, isDate_1.DateFormats.MMDDYYYY), false);
54
+ });
55
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isEmail_1 = require("../../validations/isEmail");
9
+ (0, node_test_1.describe)('isEmail (SMTPUTF8)', () => {
10
+ (0, node_test_1.it)('accepts emoji in local-part by default', () => {
11
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)('I❤️CHOCOLATE@example.com'), true);
12
+ });
13
+ (0, node_test_1.it)('rejects emoji in local-part when smtpUTF8 is explicitly disabled', () => {
14
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)('I❤️CHOCOLATE@example.com', { smtpUTF8: false }), false);
15
+ });
16
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isEmail_1 = require("../../validations/isEmail");
9
+ (0, node_test_1.describe)("isEmail", () => {
10
+ //
11
+ // ✅ Basic valid emails
12
+ //
13
+ (0, node_test_1.it)("returns true for basic valid emails", () => {
14
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("foo@bar.com"), true);
15
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test@example.org"), true);
16
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("very.common@example.com"), true);
17
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("long.email-address-with-hyphens@and.subdomains.example.com"), true);
18
+ });
19
+ //
20
+ // ✅ Special characters in local-part
21
+ //
22
+ (0, node_test_1.it)("returns true for special characters", () => {
23
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test+tag@example.com"), true);
24
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("user.name+tag+sorting@example.com"), true);
25
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test/test@example.com"), true);
26
+ });
27
+ //
28
+ // ✅ IPv4 address literal
29
+ //
30
+ (0, node_test_1.it)("returns true for IPv4 address literal", () => {
31
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("user@[192.168.1.1]"), true);
32
+ });
33
+ //
34
+ // ✅ Quoted local-parts (RFC 5322)
35
+ //
36
+ (0, node_test_1.it)("returns true for quoted local-parts", () => {
37
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)('"much.more unusual"@example.com'), true);
38
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)('"very.unusual.@.unusual.com"@example.com'), true);
39
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)('"very.(),:;<>[]".VERY."very@\\ "very".unusual"@strange.example.com'), true);
40
+ });
41
+ //
42
+ // ✅ IPv6 domain literal
43
+ //
44
+ (0, node_test_1.it)("returns true for IPv6 domain literals", () => {
45
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("user@[IPv6:2001:db8::1]"), true);
46
+ });
47
+ //
48
+ // ❌ Invalid emails
49
+ //
50
+ (0, node_test_1.it)("returns false for invalid emails", () => {
51
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)(""), false);
52
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("@example.com"), false);
53
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test@"), false);
54
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test"), false);
55
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test@.com"), false);
56
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test..test@example.com"), false);
57
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)(".test@example.com"), false);
58
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)("test.@example.com"), false);
59
+ });
60
+ //
61
+ // ❌ Invalid quoted emails
62
+ //
63
+ (0, node_test_1.it)("returns false for invalid quoted local-parts", () => {
64
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)('"unclosed-quote@example.com'), false);
65
+ node_assert_1.default.strictEqual((0, isEmail_1.isEmail)('"missing"quotes@@example.com'), false);
66
+ });
67
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isEmpty_1 = require("../../validations/isEmpty");
9
+ (0, node_test_1.describe)('isEmpty', () => {
10
+ (0, node_test_1.it)('returns true for empty string', () => {
11
+ node_assert_1.default.strictEqual((0, isEmpty_1.isEmpty)(''), true);
12
+ });
13
+ (0, node_test_1.it)('returns true for whitespace string', () => {
14
+ node_assert_1.default.strictEqual((0, isEmpty_1.isEmpty)(' '), true);
15
+ });
16
+ (0, node_test_1.it)('returns false for non-empty string', () => {
17
+ node_assert_1.default.strictEqual((0, isEmpty_1.isEmpty)('foo'), false);
18
+ });
19
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isHexColor_1 = require("../../validations/isHexColor");
9
+ (0, node_test_1.describe)('isHexColor', () => {
10
+ (0, node_test_1.it)('returns true for valid hex colors', () => {
11
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#abc'), true);
12
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('abc'), true);
13
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#a1b2c3'), true);
14
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('a1b2c3'), true);
15
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#A1B2C3'), true);
16
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)(' #fff '), true);
17
+ });
18
+ (0, node_test_1.it)('returns false for invalid hex colors', () => {
19
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#12G'), false);
20
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('xyz'), false);
21
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#ab'), false);
22
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#12345'), false);
23
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('12345'), false);
24
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#1234567'), false);
25
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('1234567'), false);
26
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('#1234g6'), false);
27
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('1234g6'), false);
28
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)(''), false);
29
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)(' '), false);
30
+ node_assert_1.default.strictEqual((0, isHexColor_1.isHexColor)('blue'), false);
31
+ });
32
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isIPv4_1 = require("../../validations/isIPv4");
9
+ (0, node_test_1.describe)('isIPv4', () => {
10
+ (0, node_test_1.it)('returns true for valid IPv4 addresses', () => {
11
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.1'), true);
12
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('0.0.0.0'), true);
13
+ });
14
+ (0, node_test_1.it)('returns false for invalid IPv4 addresses with out-of-range numbers', () => {
15
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('256.1.1.1'), false);
16
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('1.256.1.1'), false);
17
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('-1.0.0.1'), false);
18
+ });
19
+ (0, node_test_1.it)('returns false for invalid IPv4 addresses with wrong number of parts', () => {
20
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1'), false);
21
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192'), false);
22
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168'), false);
23
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)(''), false);
24
+ });
25
+ (0, node_test_1.it)('returns false for IPv4 addresses with leading zeros', () => {
26
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.01.1'), false);
27
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('01.168.1.1'), false);
28
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.001'), false);
29
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('000.0.0.1'), false);
30
+ });
31
+ (0, node_test_1.it)('returns false for non-numeric parts', () => {
32
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.a'), false);
33
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('abc.168.1.1'), false);
34
+ });
35
+ (0, node_test_1.it)('returns false for IPv4 addresses with special characters', () => {
36
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.1.'), false);
37
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('.192.168.1.1'), false);
38
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192..168.1.1'), false);
39
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.1/24'), false);
40
+ });
41
+ (0, node_test_1.it)('returns false for empty strings and edge cases', () => {
42
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)(''), false);
43
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('...'), false);
44
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168..1'), false);
45
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.'), false);
46
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('.192.168.1'), false);
47
+ });
48
+ (0, node_test_1.it)('returns false for decimal numbers', () => {
49
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.1.5'), false);
50
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.5.0'), false);
51
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('1.2.3.4.5'), false);
52
+ });
53
+ (0, node_test_1.it)('returns false for hexadecimal and other number formats', () => {
54
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('0x192.168.1.1'), false);
55
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.0x168.1.1'), false);
56
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.0x1.1'), false);
57
+ node_assert_1.default.strictEqual((0, isIPv4_1.isIPv4)('192.168.1.0x1'), false);
58
+ });
59
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isPalindrome_1 = require("../../validations/isPalindrome");
9
+ (0, node_test_1.describe)('isPalindrome', () => {
10
+ (0, node_test_1.it)('returns true for simple palindromes', () => {
11
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('racecar'), true);
12
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('madam'), true);
13
+ });
14
+ (0, node_test_1.it)('returns false for non-palindromes', () => {
15
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('hello'), false);
16
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('world'), false);
17
+ });
18
+ (0, node_test_1.it)('is case-insensitive', () => {
19
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('RaceCar'), true);
20
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('MadAm'), true);
21
+ });
22
+ (0, node_test_1.it)('ignores punctuation and spaces', () => {
23
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('A man, a plan, a canal: Panama'), true);
24
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('No lemon, no melon!'), true);
25
+ });
26
+ (0, node_test_1.it)('returns true for empty string and single characters', () => {
27
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)(''), true);
28
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('x'), true);
29
+ });
30
+ (0, node_test_1.it)('handles strings with only special characters', () => {
31
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('?!'), true); // cleans to ''
32
+ node_assert_1.default.strictEqual((0, isPalindrome_1.isPalindrome)('!@#$$#@!'), true); // also cleans to ''
33
+ });
34
+ (0, node_test_1.it)('throws an error if input is not a string', () => {
35
+ node_assert_1.default.throws(() => (0, isPalindrome_1.isPalindrome)(123), /Input must be a string/);
36
+ node_assert_1.default.throws(() => (0, isPalindrome_1.isPalindrome)(null), /Input must be a string/);
37
+ node_assert_1.default.throws(() => (0, isPalindrome_1.isPalindrome)(undefined), /Input must be a string/);
38
+ });
39
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isSlug_1 = require("../../validations/isSlug");
9
+ (0, node_test_1.describe)('isSlug', () => {
10
+ (0, node_test_1.it)('returns true for valid slug', () => {
11
+ node_assert_1.default.strictEqual((0, isSlug_1.isSlug)('foo-bar-baz'), true);
12
+ });
13
+ (0, node_test_1.it)('returns false for string with spaces', () => {
14
+ node_assert_1.default.strictEqual((0, isSlug_1.isSlug)('foo bar'), false);
15
+ });
16
+ (0, node_test_1.it)('returns false for empty string', () => {
17
+ node_assert_1.default.strictEqual((0, isSlug_1.isSlug)(''), false);
18
+ });
19
+ (0, node_test_1.it)('returns false for non-string input', () => {
20
+ node_assert_1.default.strictEqual((0, isSlug_1.isSlug)(123), false);
21
+ });
22
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const isTypeOf_1 = require("../../validations/isTypeOf");
9
+ (0, node_test_1.describe)('isType', () => {
10
+ (0, node_test_1.it)('returns true for valid file', () => {
11
+ node_assert_1.default.strictEqual((0, isTypeOf_1.isTypeOf)('photo.PNG', 'image'), true);
12
+ });
13
+ (0, node_test_1.it)('returns false for unknown extension', () => {
14
+ node_assert_1.default.strictEqual((0, isTypeOf_1.isTypeOf)('unknown.xyz', 'document'), false);
15
+ });
16
+ (0, node_test_1.it)('returns false for unknown type category', () => {
17
+ node_assert_1.default.strictEqual((0, isTypeOf_1.isTypeOf)('photo.png', 'media'), false);
18
+ });
19
+ (0, node_test_1.it)('returns false for mismatched type', () => {
20
+ node_assert_1.default.strictEqual((0, isTypeOf_1.isTypeOf)('video.mp4', 'document'), false);
21
+ });
22
+ (0, node_test_1.it)('returns false for missing extension', () => {
23
+ node_assert_1.default.strictEqual((0, isTypeOf_1.isTypeOf)('filewithoutextension', 'image'), false);
24
+ });
25
+ (0, node_test_1.it)('handles URL with query and hash fragments', () => {
26
+ node_assert_1.default.strictEqual((0, isTypeOf_1.isTypeOf)('https://example.com/pic.jpeg?version=2#section', 'image'), true);
27
+ });
28
+ });
@@ -0,0 +1 @@
1
+ export {};