ed881df85f44446f4048c5de8dc42e41d7b89005f5c662445b18bfc00fa6bbdec99d814e5fd0168953d84387d5b872db92b10de7cbaf97886456585a364414 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import extend from '../utils/extend';
  2. import { createUTC } from './utc';
  3. import getParsingFlags from '../create/parsing-flags';
  4. import some from '../utils/some';
  5. export function isValid(m) {
  6. if (m._isValid == null) {
  7. var flags = getParsingFlags(m);
  8. var parsedParts = some.call(flags.parsedDateParts, function (i) {
  9. return i != null;
  10. });
  11. m._isValid = !isNaN(m._d.getTime()) &&
  12. flags.overflow < 0 &&
  13. !flags.empty &&
  14. !flags.invalidMonth &&
  15. !flags.invalidWeekday &&
  16. !flags.nullInput &&
  17. !flags.invalidFormat &&
  18. !flags.userInvalidated &&
  19. (!flags.meridiem || (flags.meridiem && parsedParts));
  20. if (m._strict) {
  21. m._isValid = m._isValid &&
  22. flags.charsLeftOver === 0 &&
  23. flags.unusedTokens.length === 0 &&
  24. flags.bigHour === undefined;
  25. }
  26. }
  27. return m._isValid;
  28. }
  29. export function createInvalid (flags) {
  30. var m = createUTC(NaN);
  31. if (flags != null) {
  32. extend(getParsingFlags(m), flags);
  33. }
  34. else {
  35. getParsingFlags(m).userInvalidated = true;
  36. }
  37. return m;
  38. }