12c1ed06b1ba535384cb0b13901a70cf84ba2cd2e10f64efe08b58a995a13529afcb2ad693130d0f584890ae97b28c20023725b0eb2b0596f53bff95f73a02 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. var isNowValid = !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. isNowValid = isNowValid &&
  22. flags.charsLeftOver === 0 &&
  23. flags.unusedTokens.length === 0 &&
  24. flags.bigHour === undefined;
  25. }
  26. if (Object.isFrozen == null || !Object.isFrozen(m)) {
  27. m._isValid = isNowValid;
  28. }
  29. else {
  30. return isNowValid;
  31. }
  32. }
  33. return m._isValid;
  34. }
  35. export function createInvalid (flags) {
  36. var m = createUTC(NaN);
  37. if (flags != null) {
  38. extend(getParsingFlags(m), flags);
  39. }
  40. else {
  41. getParsingFlags(m).userInvalidated = true;
  42. }
  43. return m;
  44. }