| 'use strict'; | 
|   | 
| var GetIntrinsic = require('get-intrinsic'); | 
|   | 
| var $DateUTC = GetIntrinsic('%Date.UTC%'); | 
|   | 
| var $isFinite = require('../helpers/isFinite'); | 
|   | 
| var DateFromTime = require('./DateFromTime'); | 
| var Day = require('./Day'); | 
| var floor = require('./floor'); | 
| var modulo = require('./modulo'); | 
| var MonthFromTime = require('./MonthFromTime'); | 
| var ToIntegerOrInfinity = require('./ToIntegerOrInfinity'); | 
| var YearFromTime = require('./YearFromTime'); | 
|   | 
| // https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12 | 
|   | 
| module.exports = function MakeDay(year, month, date) { | 
|     if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) { | 
|         return NaN; | 
|     } | 
|     var y = ToIntegerOrInfinity(year); | 
|     var m = ToIntegerOrInfinity(month); | 
|     var dt = ToIntegerOrInfinity(date); | 
|     var ym = y + floor(m / 12); | 
|     if (!$isFinite(ym)) { | 
|         return NaN; | 
|     } | 
|     var mn = modulo(m, 12); | 
|     var t = $DateUTC(ym, mn, 1); | 
|     if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) { | 
|         return NaN; | 
|     } | 
|     return Day(t) + dt - 1; | 
| }; |