diff --git a/readme.md b/readme.md index e4e1924..12a56fd 100644 --- a/readme.md +++ b/readme.md @@ -241,6 +241,10 @@ is.enumCase('other', Direction); Returns `true` if the value is a `string` and the `.length` is 0. +##### .emptyStringOrWhitespace(value) + +Returns `true` if `is.emptyString(value)` or if it's a `string` that is all whitespace. + ##### .nonEmptyString(value) Returns `true` if the value is a `string` and the `.length` is more than 0. @@ -256,10 +260,6 @@ values.filter(is.nonEmptyStringAndNotWhitespace); //=> ['property1', 'property2'] ``` -##### .emptyStringOrWhitespace(value) - -Returns `true` if `is.emptyString(value)` or if it's a `string` that is all whitespace. - ##### .emptyArray(value) Returns `true` if the value is an `Array` and the `.length` is 0. diff --git a/source/index.ts b/source/index.ts index 6836b18..504e5e1 100644 --- a/source/index.ts +++ b/source/index.ts @@ -344,12 +344,12 @@ is.nonEmptyArray = (value: unknown): value is unknown[] => is.array(value) && va is.emptyString = (value: unknown): value is '' => is.string(value) && value.length === 0; -// TODO: Use `not ''` when the `not` operator is available. -is.nonEmptyString = (value: unknown): value is string => is.string(value) && value.length > 0; - const isWhiteSpaceString = (value: unknown): value is string => is.string(value) && !/\S/.test(value); is.emptyStringOrWhitespace = (value: unknown): value is string => is.emptyString(value) || isWhiteSpaceString(value); +// TODO: Use `not ''` when the `not` operator is available. +is.nonEmptyString = (value: unknown): value is string => is.string(value) && value.length > 0; + // TODO: Use `not ''` when the `not` operator is available. is.nonEmptyStringAndNotWhitespace = (value: unknown): value is string => is.string(value) && !is.emptyStringOrWhitespace(value); @@ -434,8 +434,8 @@ export const enum AssertionTypeDescription { emptyArray = 'empty array', nonEmptyArray = 'non-empty array', emptyString = 'empty string', - nonEmptyString = 'non-empty string', emptyStringOrWhitespace = 'empty string or whitespace', + nonEmptyString = 'non-empty string', nonEmptyStringAndNotWhitespace = 'non-empty string and not whitespace', emptyObject = 'empty object', nonEmptyObject = 'non-empty object', @@ -524,8 +524,8 @@ interface Assert { emptyArray: (value: unknown) => asserts value is never[]; nonEmptyArray: (value: unknown) => asserts value is unknown[]; emptyString: (value: unknown) => asserts value is ''; - nonEmptyString: (value: unknown) => asserts value is string; emptyStringOrWhitespace: (value: unknown) => asserts value is string; + nonEmptyString: (value: unknown) => asserts value is string; nonEmptyStringAndNotWhitespace: (value: unknown) => asserts value is string; emptyObject: (value: unknown) => asserts value is Record; nonEmptyObject: (value: unknown) => asserts value is Record; @@ -626,8 +626,8 @@ export const assert: Assert = { emptyArray: (value: unknown): asserts value is never[] => assertType(is.emptyArray(value), AssertionTypeDescription.emptyArray, value), nonEmptyArray: (value: unknown): asserts value is unknown[] => assertType(is.nonEmptyArray(value), AssertionTypeDescription.nonEmptyArray, value), emptyString: (value: unknown): asserts value is '' => assertType(is.emptyString(value), AssertionTypeDescription.emptyString, value), - nonEmptyString: (value: unknown): asserts value is string => assertType(is.nonEmptyString(value), AssertionTypeDescription.nonEmptyString, value), emptyStringOrWhitespace: (value: unknown): asserts value is string => assertType(is.emptyStringOrWhitespace(value), AssertionTypeDescription.emptyStringOrWhitespace, value), + nonEmptyString: (value: unknown): asserts value is string => assertType(is.nonEmptyString(value), AssertionTypeDescription.nonEmptyString, value), nonEmptyStringAndNotWhitespace: (value: unknown): asserts value is string => assertType(is.nonEmptyStringAndNotWhitespace(value), AssertionTypeDescription.nonEmptyStringAndNotWhitespace, value), emptyObject: (value: unknown): asserts value is Record => assertType(is.emptyObject(value), AssertionTypeDescription.emptyObject, value), nonEmptyObject: (value: unknown): asserts value is Record => assertType(is.nonEmptyObject(value), AssertionTypeDescription.nonEmptyObject, value), diff --git a/test/test.ts b/test/test.ts index 7fb01f8..0556431 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1403,22 +1403,6 @@ test('is.emptyString', t => { }); }); -test('is.nonEmptyString', t => { - t.false(is.nonEmptyString('')); - t.false(is.nonEmptyString(String())); - t.true(is.nonEmptyString('🦄')); - - t.throws(() => { - assert.nonEmptyString(''); - }); - t.throws(() => { - assert.nonEmptyString(String()); - }); - t.notThrows(() => { - assert.nonEmptyString('🦄'); - }); -}); - test('is.emptyStringOrWhitespace', t => { testType(t, 'emptyString', ['string']); t.true(is.emptyStringOrWhitespace(' ')); @@ -1436,6 +1420,22 @@ test('is.emptyStringOrWhitespace', t => { }); }); +test('is.nonEmptyString', t => { + t.false(is.nonEmptyString('')); + t.false(is.nonEmptyString(String())); + t.true(is.nonEmptyString('🦄')); + + t.throws(() => { + assert.nonEmptyString(''); + }); + t.throws(() => { + assert.nonEmptyString(String()); + }); + t.notThrows(() => { + assert.nonEmptyString('🦄'); + }); +}); + test('is.nonEmptyStringAndNotWhitespace', t => { t.false(is.nonEmptyStringAndNotWhitespace(' ')); t.true(is.nonEmptyStringAndNotWhitespace('🦄'));