846cefd3165657961c2a5083ffbbc7d33a756320b261b88ba95bbf18378773d1120e14fd4a12f82b23f28d0812c65daaf5758322815a663bf65bb969e4379f 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. var flags = null,
  7. parsedParts = false,
  8. isNowValid = m._d && !isNaN(m._d.getTime());
  9. if (isNowValid) {
  10. flags = getParsingFlags(m);
  11. parsedParts = some.call(flags.parsedDateParts, function (i) {
  12. return i != null;
  13. });
  14. isNowValid =
  15. flags.overflow < 0 &&
  16. !flags.empty &&
  17. !flags.invalidEra &&
  18. !flags.invalidMonth &&
  19. !flags.invalidWeekday &&
  20. !flags.weekdayMismatch &&
  21. !flags.nullInput &&
  22. !flags.invalidFormat &&
  23. !flags.userInvalidated &&
  24. (!flags.meridiem || (flags.meridiem && parsedParts));
  25. if (m._strict) {
  26. isNowValid =
  27. isNowValid &&
  28. flags.charsLeftOver === 0 &&
  29. flags.unusedTokens.length === 0 &&
  30. flags.bigHour === undefined;
  31. }
  32. }
  33. if (Object.isFrozen == null || !Object.isFrozen(m)) {
  34. m._isValid = isNowValid;
  35. } else {
  36. return isNowValid;
  37. }
  38. return m._isValid;
  39. }
  40. export function createInvalid(flags) {
  41. var m = createUTC(NaN);
  42. if (flags != null) {
  43. extend(getParsingFlags(m), flags);
  44. } else {
  45. getParsingFlags(m).userInvalidated = true;
  46. }
  47. return m;
  48. }