|
import extend from '../utils/extend'; |
|
import { createUTC } from './utc'; |
|
import getParsingFlags from '../create/parsing-flags'; |
|
import some from '../utils/some'; |
|
|
|
export function isValid(m) { |
|
if (m._isValid == null) { |
|
var flags = getParsingFlags(m); |
|
var parsedParts = some.call(flags.parsedDateParts, function (i) { |
|
return i != null; |
|
}); |
|
var isNowValid = !isNaN(m._d.getTime()) && |
|
flags.overflow < 0 && |
|
!flags.empty && |
|
!flags.invalidMonth && |
|
!flags.invalidWeekday && |
|
!flags.weekdayMismatch && |
|
!flags.nullInput && |
|
!flags.invalidFormat && |
|
!flags.userInvalidated && |
|
(!flags.meridiem || (flags.meridiem && parsedParts)); |
|
|
|
if (m._strict) { |
|
isNowValid = isNowValid && |
|
flags.charsLeftOver === 0 && |
|
flags.unusedTokens.length === 0 && |
|
flags.bigHour === undefined; |
|
} |
|
|
|
if (Object.isFrozen == null || !Object.isFrozen(m)) { |
|
m._isValid = isNowValid; |
|
} |
|
else { |
|
return isNowValid; |
|
} |
|
} |
|
return m._isValid; |
|
} |
|
|
|
export function createInvalid (flags) { |
|
var m = createUTC(NaN); |
|
if (flags != null) { |
|
extend(getParsingFlags(m), flags); |
|
} |
|
else { |
|
getParsingFlags(m).userInvalidated = true; |
|
} |
|
|
|
return m; |
|
} |
|
|