@barbapapazes/content-creation 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.mjs +11 -2
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -104,7 +104,7 @@ ${J}${i.trimStart()}`),r=3+stripVTControlCharacters(i.trimStart()).length)}proce
104
104
  `)}),helpCallback&&(sections=helpCallback(sections)||sections),console.log(sections.map(section=>section.title?`${section.title}:
105
105
  ${section.body}`:section.body).join(`
106
106
 
107
- `))}outputVersion(){let{name}=this.cli,{versionNumber}=this.cli.globalCommand;versionNumber&&console.log(`${name}/${versionNumber} ${platformInfo}`)}checkRequiredArgs(){let minimalArgsCount=this.args.filter(arg=>arg.required).length;if(this.cli.args.length<minimalArgsCount)throw new CACError(`missing required args for command \`${this.rawName}\``)}checkUnknownOptions(){let{options,globalCommand}=this.cli;if(!this.config.allowUnknownOptions){for(let name of Object.keys(options))if(name!==`--`&&!this.hasOption(name)&&!globalCommand.hasOption(name))throw new CACError(`Unknown option \`${name.length>1?`--${name}`:`-${name}`}\``)}}checkOptionValue(){let{options:parsedOptions,globalCommand}=this.cli,options=[...globalCommand.options,...this.options];for(let option of options){let value=parsedOptions[option.name.split(`.`)[0]];if(option.required){let hasNegated=options.some(o$1=>o$1.negated&&o$1.names.includes(option.name));if(value===!0||value===!1&&!hasNegated)throw new CACError(`option \`${option.rawName}\` value is missing`)}}}},GlobalCommand=class extends Command{constructor(cli$1){super(`@@global@@`,``,{},cli$1)}},__assign=Object.assign,CAC=class extends EventEmitter{constructor(name=``){super(),this.name=name,this.commands=[],this.rawArgs=[],this.args=[],this.options={},this.globalCommand=new GlobalCommand(this),this.globalCommand.usage(`<command> [options]`)}usage(text){return this.globalCommand.usage(text),this}command(rawName,description,config){let command=new Command(rawName,description||``,config,this);return command.globalCommand=this.globalCommand,this.commands.push(command),command}option(rawName,description,config){return this.globalCommand.option(rawName,description,config),this}help(callback){return this.globalCommand.option(`-h, --help`,`Display this message`),this.globalCommand.helpCallback=callback,this.showHelpOnExit=!0,this}version(version$1,customFlags=`-v, --version`){return this.globalCommand.version(version$1,customFlags),this.showVersionOnExit=!0,this}example(example){return this.globalCommand.example(example),this}outputHelp(){this.matchedCommand?this.matchedCommand.outputHelp():this.globalCommand.outputHelp()}outputVersion(){this.globalCommand.outputVersion()}setParsedInfo({args,options},matchedCommand,matchedCommandName){return this.args=args,this.options=options,matchedCommand&&(this.matchedCommand=matchedCommand),matchedCommandName&&(this.matchedCommandName=matchedCommandName),this}unsetMatchedCommand(){this.matchedCommand=void 0,this.matchedCommandName=void 0}parse(argv=processArgs,{run=!0}={}){this.rawArgs=argv,this.name||=argv[1]?getFileName(argv[1]):`cli`;let shouldParse=!0;for(let command of this.commands){let parsed=this.mri(argv.slice(2),command),commandName=parsed.args[0];if(command.isMatched(commandName)){shouldParse=!1;let parsedInfo=__assign(__assign({},parsed),{args:parsed.args.slice(1)});this.setParsedInfo(parsedInfo,command,commandName),this.emit(`command:${commandName}`,command)}}if(shouldParse){for(let command of this.commands)if(command.name===``){shouldParse=!1;let parsed=this.mri(argv.slice(2),command);this.setParsedInfo(parsed,command),this.emit(`command:!`,command)}}if(shouldParse){let parsed=this.mri(argv.slice(2));this.setParsedInfo(parsed)}this.options.help&&this.showHelpOnExit&&(this.outputHelp(),run=!1,this.unsetMatchedCommand()),this.options.version&&this.showVersionOnExit&&this.matchedCommandName==null&&(this.outputVersion(),run=!1,this.unsetMatchedCommand());let parsedArgv={args:this.args,options:this.options};return run&&this.runMatchedCommand(),!this.matchedCommand&&this.args[0]&&this.emit(`command:*`),parsedArgv}mri(argv,command){let cliOptions=[...this.globalCommand.options,...command?command.options:[]],mriOptions=getMriOptions(cliOptions),argsAfterDoubleDashes=[],doubleDashesIndex=argv.indexOf(`--`);doubleDashesIndex>-1&&(argsAfterDoubleDashes=argv.slice(doubleDashesIndex+1),argv=argv.slice(0,doubleDashesIndex));let parsed=mri2(argv,mriOptions);parsed=Object.keys(parsed).reduce((res,name)=>__assign(__assign({},res),{[camelcaseOptionName(name)]:parsed[name]}),{_:[]});let args=parsed._,options={"--":argsAfterDoubleDashes},ignoreDefault=command&&command.config.ignoreOptionDefaultValue?command.config.ignoreOptionDefaultValue:this.globalCommand.config.ignoreOptionDefaultValue,transforms=Object.create(null);for(let cliOption of cliOptions){if(!ignoreDefault&&cliOption.config.default!==void 0)for(let name of cliOption.names)options[name]=cliOption.config.default;Array.isArray(cliOption.config.type)&&transforms[cliOption.name]===void 0&&(transforms[cliOption.name]=Object.create(null),transforms[cliOption.name].shouldTransform=!0,transforms[cliOption.name].transformFunction=cliOption.config.type[0])}for(let key of Object.keys(parsed))key!==`_`&&(setDotProp(options,key.split(`.`),parsed[key]),setByType(options,transforms));return{args,options}}runMatchedCommand(){let{args,options,matchedCommand:command}=this;if(!command||!command.commandAction)return;command.checkUnknownOptions(),command.checkOptionValue(),command.checkRequiredArgs();let actionArgs=[];return command.args.forEach((arg,index)=>{arg.variadic?actionArgs.push(args.slice(index)):actionArgs.push(args[index])}),actionArgs.push(options),command.commandAction.apply(this,actionArgs)}};const cac=(name=``)=>new CAC(name),daysInYear=365.2425,maxTime=10**8*24*60*60*1e3,millisecondsInWeek=6048e5,millisecondsInDay=864e5,millisecondsInMinute=6e4,millisecondsInHour=36e5,millisecondsInSecond=1e3,secondsInHour=3600,secondsInDay=3600*24,secondsInWeek=secondsInDay*7,secondsInYear=secondsInDay*365.2425,secondsInMonth=31556952/12,secondsInQuarter=2629746*3,constructFromSymbol=Symbol.for(`constructDateFrom`);function constructFrom(date,value){return typeof date==`function`?date(value):date&&typeof date==`object`&&constructFromSymbol in date?date[constructFromSymbol](value):date instanceof Date?new date.constructor(value):new Date(value)}function toDate(argument,context){return constructFrom(context||argument,argument)}function addDays(date,amount,options){let _date=toDate(date,options?.in);return isNaN(amount)?constructFrom(options?.in||date,NaN):(amount&&_date.setDate(_date.getDate()+amount),_date)}let defaultOptions={};function getDefaultOptions$1(){return defaultOptions}function startOfWeek(date,options){let defaultOptions$1=getDefaultOptions$1(),weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0,_date=toDate(date,options?.in),day=_date.getDay(),diff=(day<weekStartsOn?7:0)+day-weekStartsOn;return _date.setDate(_date.getDate()-diff),_date.setHours(0,0,0,0),_date}function startOfISOWeek(date,options){return startOfWeek(date,{...options,weekStartsOn:1})}function getISOWeekYear(date,options){let _date=toDate(date,options?.in),year=_date.getFullYear(),fourthOfJanuaryOfNextYear=constructFrom(_date,0);fourthOfJanuaryOfNextYear.setFullYear(year+1,0,4),fourthOfJanuaryOfNextYear.setHours(0,0,0,0);let startOfNextYear=startOfISOWeek(fourthOfJanuaryOfNextYear),fourthOfJanuaryOfThisYear=constructFrom(_date,0);fourthOfJanuaryOfThisYear.setFullYear(year,0,4),fourthOfJanuaryOfThisYear.setHours(0,0,0,0);let startOfThisYear=startOfISOWeek(fourthOfJanuaryOfThisYear);return _date.getTime()>=startOfNextYear.getTime()?year+1:_date.getTime()>=startOfThisYear.getTime()?year:year-1}function getTimezoneOffsetInMilliseconds(date){let _date=toDate(date),utcDate=new Date(Date.UTC(_date.getFullYear(),_date.getMonth(),_date.getDate(),_date.getHours(),_date.getMinutes(),_date.getSeconds(),_date.getMilliseconds()));return utcDate.setUTCFullYear(_date.getFullYear()),date-+utcDate}function normalizeDates(context,...dates){let normalize=constructFrom.bind(null,context||dates.find(date=>typeof date==`object`));return dates.map(normalize)}function startOfDay(date,options){let _date=toDate(date,options?.in);return _date.setHours(0,0,0,0),_date}function differenceInCalendarDays(laterDate,earlierDate,options){let[laterDate_,earlierDate_]=normalizeDates(options?.in,laterDate,earlierDate),laterStartOfDay=startOfDay(laterDate_),earlierStartOfDay=startOfDay(earlierDate_),laterTimestamp=+laterStartOfDay-getTimezoneOffsetInMilliseconds(laterStartOfDay),earlierTimestamp=+earlierStartOfDay-getTimezoneOffsetInMilliseconds(earlierStartOfDay);return Math.round((laterTimestamp-earlierTimestamp)/864e5)}function startOfISOWeekYear(date,options){let year=getISOWeekYear(date,options),fourthOfJanuary=constructFrom(options?.in||date,0);return fourthOfJanuary.setFullYear(year,0,4),fourthOfJanuary.setHours(0,0,0,0),startOfISOWeek(fourthOfJanuary)}function isDate(value){return value instanceof Date||typeof value==`object`&&Object.prototype.toString.call(value)===`[object Date]`}function isValid(date){return!(!isDate(date)&&typeof date!=`number`||isNaN(+toDate(date)))}function startOfYear(date,options){let date_=toDate(date,options?.in);return date_.setFullYear(date_.getFullYear(),0,1),date_.setHours(0,0,0,0),date_}const formatDistanceLocale={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},formatDistance=(token,count,options)=>{let result,tokenValue=formatDistanceLocale[token];return result=typeof tokenValue==`string`?tokenValue:count===1?tokenValue.one:tokenValue.other.replace(`{{count}}`,count.toString()),options?.addSuffix?options.comparison&&options.comparison>0?`in `+result:result+` ago`:result};function buildFormatLongFn(args){return(options={})=>{let width=options.width?String(options.width):args.defaultWidth;return args.formats[width]||args.formats[args.defaultWidth]}}const dateFormats={full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},timeFormats={full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},dateTimeFormats={full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},formatLong={date:buildFormatLongFn({formats:dateFormats,defaultWidth:`full`}),time:buildFormatLongFn({formats:timeFormats,defaultWidth:`full`}),dateTime:buildFormatLongFn({formats:dateTimeFormats,defaultWidth:`full`})},formatRelativeLocale={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},formatRelative=(token,_date,_baseDate,_options)=>formatRelativeLocale[token];function buildLocalizeFn(args){return(value,options)=>{let context=options?.context?String(options.context):`standalone`,valuesArray;if(context===`formatting`&&args.formattingValues){let defaultWidth=args.defaultFormattingWidth||args.defaultWidth,width=options?.width?String(options.width):defaultWidth;valuesArray=args.formattingValues[width]||args.formattingValues[defaultWidth]}else{let defaultWidth=args.defaultWidth,width=options?.width?String(options.width):args.defaultWidth;valuesArray=args.values[width]||args.values[defaultWidth]}let index=args.argumentCallback?args.argumentCallback(value):value;return valuesArray[index]}}const eraValues={narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},quarterValues={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},monthValues={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},dayValues={narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},dayPeriodValues={narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},formattingDayPeriodValues={narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},ordinalNumber=(dirtyNumber,_options)=>{let number=Number(dirtyNumber),rem100=number%100;if(rem100>20||rem100<10)switch(rem100%10){case 1:return number+`st`;case 2:return number+`nd`;case 3:return number+`rd`}return number+`th`},localize={ordinalNumber,era:buildLocalizeFn({values:eraValues,defaultWidth:`wide`}),quarter:buildLocalizeFn({values:quarterValues,defaultWidth:`wide`,argumentCallback:quarter=>quarter-1}),month:buildLocalizeFn({values:monthValues,defaultWidth:`wide`}),day:buildLocalizeFn({values:dayValues,defaultWidth:`wide`}),dayPeriod:buildLocalizeFn({values:dayPeriodValues,defaultWidth:`wide`,formattingValues:formattingDayPeriodValues,defaultFormattingWidth:`wide`})};function buildMatchFn(args){return(string,options={})=>{let width=options.width,matchPattern=width&&args.matchPatterns[width]||args.matchPatterns[args.defaultMatchWidth],matchResult=string.match(matchPattern);if(!matchResult)return null;let matchedString=matchResult[0],parsePatterns=width&&args.parsePatterns[width]||args.parsePatterns[args.defaultParseWidth],key=Array.isArray(parsePatterns)?findIndex(parsePatterns,pattern=>pattern.test(matchedString)):findKey(parsePatterns,pattern=>pattern.test(matchedString)),value;value=args.valueCallback?args.valueCallback(key):key,value=options.valueCallback?options.valueCallback(value):value;let rest=string.slice(matchedString.length);return{value,rest}}}function findKey(object,predicate){for(let key in object)if(Object.prototype.hasOwnProperty.call(object,key)&&predicate(object[key]))return key}function findIndex(array,predicate){for(let key=0;key<array.length;key++)if(predicate(array[key]))return key}function buildMatchPatternFn(args){return(string,options={})=>{let matchResult=string.match(args.matchPattern);if(!matchResult)return null;let matchedString=matchResult[0],parseResult=string.match(args.parsePattern);if(!parseResult)return null;let value=args.valueCallback?args.valueCallback(parseResult[0]):parseResult[0];value=options.valueCallback?options.valueCallback(value):value;let rest=string.slice(matchedString.length);return{value,rest}}}const matchOrdinalNumberPattern=/^(\d+)(th|st|nd|rd)?/i,parseOrdinalNumberPattern=/\d+/i,matchEraPatterns={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},parseEraPatterns={any:[/^b/i,/^(a|c)/i]},matchQuarterPatterns={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},parseQuarterPatterns={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},parseMonthPatterns={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},parseDayPatterns={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},matchDayPeriodPatterns={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},parseDayPeriodPatterns={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},match={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern,parsePattern:parseOrdinalNumberPattern,valueCallback:value=>parseInt(value,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns,defaultMatchWidth:`wide`,parsePatterns:parseEraPatterns,defaultParseWidth:`any`}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns,defaultMatchWidth:`wide`,parsePatterns:parseQuarterPatterns,defaultParseWidth:`any`,valueCallback:index=>index+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns,defaultMatchWidth:`wide`,parsePatterns:parseMonthPatterns,defaultParseWidth:`any`}),day:buildMatchFn({matchPatterns:matchDayPatterns,defaultMatchWidth:`wide`,parsePatterns:parseDayPatterns,defaultParseWidth:`any`}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns,defaultMatchWidth:`any`,parsePatterns:parseDayPeriodPatterns,defaultParseWidth:`any`})},enUS={code:`en-US`,formatDistance,formatLong,formatRelative,localize,match,options:{weekStartsOn:0,firstWeekContainsDate:1}};function getDayOfYear(date,options){let _date=toDate(date,options?.in);return differenceInCalendarDays(_date,startOfYear(_date))+1}function getISOWeek(date,options){let _date=toDate(date,options?.in),diff=startOfISOWeek(_date)-+startOfISOWeekYear(_date);return Math.round(diff/millisecondsInWeek)+1}function getWeekYear(date,options){let _date=toDate(date,options?.in),year=_date.getFullYear(),defaultOptions$1=getDefaultOptions$1(),firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,firstWeekOfNextYear=constructFrom(options?.in||date,0);firstWeekOfNextYear.setFullYear(year+1,0,firstWeekContainsDate),firstWeekOfNextYear.setHours(0,0,0,0);let startOfNextYear=startOfWeek(firstWeekOfNextYear,options),firstWeekOfThisYear=constructFrom(options?.in||date,0);firstWeekOfThisYear.setFullYear(year,0,firstWeekContainsDate),firstWeekOfThisYear.setHours(0,0,0,0);let startOfThisYear=startOfWeek(firstWeekOfThisYear,options);return+_date>=+startOfNextYear?year+1:+_date>=+startOfThisYear?year:year-1}function startOfWeekYear(date,options){let defaultOptions$1=getDefaultOptions$1(),firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,year=getWeekYear(date,options),firstWeek=constructFrom(options?.in||date,0);return firstWeek.setFullYear(year,0,firstWeekContainsDate),firstWeek.setHours(0,0,0,0),startOfWeek(firstWeek,options)}function getWeek(date,options){let _date=toDate(date,options?.in),diff=startOfWeek(_date,options)-+startOfWeekYear(_date,options);return Math.round(diff/millisecondsInWeek)+1}function addLeadingZeros(number,targetLength){return(number<0?`-`:``)+Math.abs(number).toString().padStart(targetLength,`0`)}const lightFormatters={y(date,token){let signedYear=date.getFullYear(),year=signedYear>0?signedYear:1-signedYear;return addLeadingZeros(token===`yy`?year%100:year,token.length)},M(date,token){let month=date.getMonth();return token===`M`?String(month+1):addLeadingZeros(month+1,2)},d(date,token){return addLeadingZeros(date.getDate(),token.length)},a(date,token){let dayPeriodEnumValue=date.getHours()/12>=1?`pm`:`am`;switch(token){case`a`:case`aa`:return dayPeriodEnumValue.toUpperCase();case`aaa`:return dayPeriodEnumValue;case`aaaaa`:return dayPeriodEnumValue[0];case`aaaa`:default:return dayPeriodEnumValue===`am`?`a.m.`:`p.m.`}},h(date,token){return addLeadingZeros(date.getHours()%12||12,token.length)},H(date,token){return addLeadingZeros(date.getHours(),token.length)},m(date,token){return addLeadingZeros(date.getMinutes(),token.length)},s(date,token){return addLeadingZeros(date.getSeconds(),token.length)},S(date,token){let numberOfDigits=token.length,milliseconds=date.getMilliseconds();return addLeadingZeros(Math.trunc(milliseconds*10**(numberOfDigits-3)),token.length)}},dayPeriodEnum={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},formatters={G:function(date,token,localize$1){let era=date.getFullYear()>0?1:0;switch(token){case`G`:case`GG`:case`GGG`:return localize$1.era(era,{width:`abbreviated`});case`GGGGG`:return localize$1.era(era,{width:`narrow`});case`GGGG`:default:return localize$1.era(era,{width:`wide`})}},y:function(date,token,localize$1){if(token===`yo`){let signedYear=date.getFullYear(),year=signedYear>0?signedYear:1-signedYear;return localize$1.ordinalNumber(year,{unit:`year`})}return lightFormatters.y(date,token)},Y:function(date,token,localize$1,options){let signedWeekYear=getWeekYear(date,options),weekYear=signedWeekYear>0?signedWeekYear:1-signedWeekYear;return token===`YY`?addLeadingZeros(weekYear%100,2):token===`Yo`?localize$1.ordinalNumber(weekYear,{unit:`year`}):addLeadingZeros(weekYear,token.length)},R:function(date,token){return addLeadingZeros(getISOWeekYear(date),token.length)},u:function(date,token){return addLeadingZeros(date.getFullYear(),token.length)},Q:function(date,token,localize$1){let quarter=Math.ceil((date.getMonth()+1)/3);switch(token){case`Q`:return String(quarter);case`QQ`:return addLeadingZeros(quarter,2);case`Qo`:return localize$1.ordinalNumber(quarter,{unit:`quarter`});case`QQQ`:return localize$1.quarter(quarter,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return localize$1.quarter(quarter,{width:`narrow`,context:`formatting`});case`QQQQ`:default:return localize$1.quarter(quarter,{width:`wide`,context:`formatting`})}},q:function(date,token,localize$1){let quarter=Math.ceil((date.getMonth()+1)/3);switch(token){case`q`:return String(quarter);case`qq`:return addLeadingZeros(quarter,2);case`qo`:return localize$1.ordinalNumber(quarter,{unit:`quarter`});case`qqq`:return localize$1.quarter(quarter,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return localize$1.quarter(quarter,{width:`narrow`,context:`standalone`});case`qqqq`:default:return localize$1.quarter(quarter,{width:`wide`,context:`standalone`})}},M:function(date,token,localize$1){let month=date.getMonth();switch(token){case`M`:case`MM`:return lightFormatters.M(date,token);case`Mo`:return localize$1.ordinalNumber(month+1,{unit:`month`});case`MMM`:return localize$1.month(month,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return localize$1.month(month,{width:`narrow`,context:`formatting`});case`MMMM`:default:return localize$1.month(month,{width:`wide`,context:`formatting`})}},L:function(date,token,localize$1){let month=date.getMonth();switch(token){case`L`:return String(month+1);case`LL`:return addLeadingZeros(month+1,2);case`Lo`:return localize$1.ordinalNumber(month+1,{unit:`month`});case`LLL`:return localize$1.month(month,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return localize$1.month(month,{width:`narrow`,context:`standalone`});case`LLLL`:default:return localize$1.month(month,{width:`wide`,context:`standalone`})}},w:function(date,token,localize$1,options){let week=getWeek(date,options);return token===`wo`?localize$1.ordinalNumber(week,{unit:`week`}):addLeadingZeros(week,token.length)},I:function(date,token,localize$1){let isoWeek=getISOWeek(date);return token===`Io`?localize$1.ordinalNumber(isoWeek,{unit:`week`}):addLeadingZeros(isoWeek,token.length)},d:function(date,token,localize$1){return token===`do`?localize$1.ordinalNumber(date.getDate(),{unit:`date`}):lightFormatters.d(date,token)},D:function(date,token,localize$1){let dayOfYear=getDayOfYear(date);return token===`Do`?localize$1.ordinalNumber(dayOfYear,{unit:`dayOfYear`}):addLeadingZeros(dayOfYear,token.length)},E:function(date,token,localize$1){let dayOfWeek=date.getDay();switch(token){case`E`:case`EE`:case`EEE`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`formatting`});case`EEEEEE`:return localize$1.day(dayOfWeek,{width:`short`,context:`formatting`});case`EEEE`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`formatting`})}},e:function(date,token,localize$1,options){let dayOfWeek=date.getDay(),localDayOfWeek=(dayOfWeek-options.weekStartsOn+8)%7||7;switch(token){case`e`:return String(localDayOfWeek);case`ee`:return addLeadingZeros(localDayOfWeek,2);case`eo`:return localize$1.ordinalNumber(localDayOfWeek,{unit:`day`});case`eee`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`formatting`});case`eeeee`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`formatting`});case`eeeeee`:return localize$1.day(dayOfWeek,{width:`short`,context:`formatting`});case`eeee`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`formatting`})}},c:function(date,token,localize$1,options){let dayOfWeek=date.getDay(),localDayOfWeek=(dayOfWeek-options.weekStartsOn+8)%7||7;switch(token){case`c`:return String(localDayOfWeek);case`cc`:return addLeadingZeros(localDayOfWeek,token.length);case`co`:return localize$1.ordinalNumber(localDayOfWeek,{unit:`day`});case`ccc`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`standalone`});case`ccccc`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`standalone`});case`cccccc`:return localize$1.day(dayOfWeek,{width:`short`,context:`standalone`});case`cccc`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`standalone`})}},i:function(date,token,localize$1){let dayOfWeek=date.getDay(),isoDayOfWeek=dayOfWeek===0?7:dayOfWeek;switch(token){case`i`:return String(isoDayOfWeek);case`ii`:return addLeadingZeros(isoDayOfWeek,token.length);case`io`:return localize$1.ordinalNumber(isoDayOfWeek,{unit:`day`});case`iii`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`formatting`});case`iiiii`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`formatting`});case`iiiiii`:return localize$1.day(dayOfWeek,{width:`short`,context:`formatting`});case`iiii`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`formatting`})}},a:function(date,token,localize$1){let dayPeriodEnumValue=date.getHours()/12>=1?`pm`:`am`;switch(token){case`a`:case`aa`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`});case`aaa`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`narrow`,context:`formatting`});case`aaaa`:default:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`wide`,context:`formatting`})}},b:function(date,token,localize$1){let hours=date.getHours(),dayPeriodEnumValue;switch(dayPeriodEnumValue=hours===12?dayPeriodEnum.noon:hours===0?dayPeriodEnum.midnight:hours/12>=1?`pm`:`am`,token){case`b`:case`bb`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`});case`bbb`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`narrow`,context:`formatting`});case`bbbb`:default:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`wide`,context:`formatting`})}},B:function(date,token,localize$1){let hours=date.getHours(),dayPeriodEnumValue;switch(dayPeriodEnumValue=hours>=17?dayPeriodEnum.evening:hours>=12?dayPeriodEnum.afternoon:hours>=4?dayPeriodEnum.morning:dayPeriodEnum.night,token){case`B`:case`BB`:case`BBB`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`narrow`,context:`formatting`});case`BBBB`:default:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`wide`,context:`formatting`})}},h:function(date,token,localize$1){if(token===`ho`){let hours=date.getHours()%12;return hours===0&&(hours=12),localize$1.ordinalNumber(hours,{unit:`hour`})}return lightFormatters.h(date,token)},H:function(date,token,localize$1){return token===`Ho`?localize$1.ordinalNumber(date.getHours(),{unit:`hour`}):lightFormatters.H(date,token)},K:function(date,token,localize$1){let hours=date.getHours()%12;return token===`Ko`?localize$1.ordinalNumber(hours,{unit:`hour`}):addLeadingZeros(hours,token.length)},k:function(date,token,localize$1){let hours=date.getHours();return hours===0&&(hours=24),token===`ko`?localize$1.ordinalNumber(hours,{unit:`hour`}):addLeadingZeros(hours,token.length)},m:function(date,token,localize$1){return token===`mo`?localize$1.ordinalNumber(date.getMinutes(),{unit:`minute`}):lightFormatters.m(date,token)},s:function(date,token,localize$1){return token===`so`?localize$1.ordinalNumber(date.getSeconds(),{unit:`second`}):lightFormatters.s(date,token)},S:function(date,token){return lightFormatters.S(date,token)},X:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();if(timezoneOffset===0)return`Z`;switch(token){case`X`:return formatTimezoneWithOptionalMinutes(timezoneOffset);case`XXXX`:case`XX`:return formatTimezone(timezoneOffset);case`XXXXX`:case`XXX`:default:return formatTimezone(timezoneOffset,`:`)}},x:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();switch(token){case`x`:return formatTimezoneWithOptionalMinutes(timezoneOffset);case`xxxx`:case`xx`:return formatTimezone(timezoneOffset);case`xxxxx`:case`xxx`:default:return formatTimezone(timezoneOffset,`:`)}},O:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();switch(token){case`O`:case`OO`:case`OOO`:return`GMT`+formatTimezoneShort(timezoneOffset,`:`);case`OOOO`:default:return`GMT`+formatTimezone(timezoneOffset,`:`)}},z:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();switch(token){case`z`:case`zz`:case`zzz`:return`GMT`+formatTimezoneShort(timezoneOffset,`:`);case`zzzz`:default:return`GMT`+formatTimezone(timezoneOffset,`:`)}},t:function(date,token,_localize){return addLeadingZeros(Math.trunc(date/1e3),token.length)},T:function(date,token,_localize){return addLeadingZeros(+date,token.length)}};function formatTimezoneShort(offset,delimiter=``){let sign=offset>0?`-`:`+`,absOffset=Math.abs(offset),hours=Math.trunc(absOffset/60),minutes=absOffset%60;return minutes===0?sign+String(hours):sign+String(hours)+delimiter+addLeadingZeros(minutes,2)}function formatTimezoneWithOptionalMinutes(offset,delimiter){return offset%60==0?(offset>0?`-`:`+`)+addLeadingZeros(Math.abs(offset)/60,2):formatTimezone(offset,delimiter)}function formatTimezone(offset,delimiter=``){let sign=offset>0?`-`:`+`,absOffset=Math.abs(offset),hours=addLeadingZeros(Math.trunc(absOffset/60),2),minutes=addLeadingZeros(absOffset%60,2);return sign+hours+delimiter+minutes}const dateLongFormatter=(pattern,formatLong$1)=>{switch(pattern){case`P`:return formatLong$1.date({width:`short`});case`PP`:return formatLong$1.date({width:`medium`});case`PPP`:return formatLong$1.date({width:`long`});case`PPPP`:default:return formatLong$1.date({width:`full`})}},timeLongFormatter=(pattern,formatLong$1)=>{switch(pattern){case`p`:return formatLong$1.time({width:`short`});case`pp`:return formatLong$1.time({width:`medium`});case`ppp`:return formatLong$1.time({width:`long`});case`pppp`:default:return formatLong$1.time({width:`full`})}},dateTimeLongFormatter=(pattern,formatLong$1)=>{let matchResult=pattern.match(/(P+)(p+)?/)||[],datePattern=matchResult[1],timePattern=matchResult[2];if(!timePattern)return dateLongFormatter(pattern,formatLong$1);let dateTimeFormat;switch(datePattern){case`P`:dateTimeFormat=formatLong$1.dateTime({width:`short`});break;case`PP`:dateTimeFormat=formatLong$1.dateTime({width:`medium`});break;case`PPP`:dateTimeFormat=formatLong$1.dateTime({width:`long`});break;case`PPPP`:default:dateTimeFormat=formatLong$1.dateTime({width:`full`});break}return dateTimeFormat.replace(`{{date}}`,dateLongFormatter(datePattern,formatLong$1)).replace(`{{time}}`,timeLongFormatter(timePattern,formatLong$1))},longFormatters={p:timeLongFormatter,P:dateTimeLongFormatter},dayOfYearTokenRE=/^D+$/,weekYearTokenRE=/^Y+$/,throwTokens=[`D`,`DD`,`YY`,`YYYY`];function isProtectedDayOfYearToken(token){return dayOfYearTokenRE.test(token)}function isProtectedWeekYearToken(token){return weekYearTokenRE.test(token)}function warnOrThrowProtectedError(token,format$1,input){let _message=message(token,format$1,input);if(console.warn(_message),throwTokens.includes(token))throw RangeError(_message)}function message(token,format$1,input){let subject=token[0]===`Y`?`years`:`days of the month`;return`Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format$1}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const formattingTokensRegExp$1=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp$1=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp$1=/^'([^]*?)'?$/,doubleQuoteRegExp$1=/''/g,unescapedLatinCharacterRegExp$1=/[a-zA-Z]/;function format(date,formatStr,options){let defaultOptions$1=getDefaultOptions$1(),locale=options?.locale??defaultOptions$1.locale??enUS,firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0,originalDate=toDate(date,options?.in);if(!isValid(originalDate))throw RangeError(`Invalid time value`);let parts=formatStr.match(longFormattingTokensRegExp$1).map(substring=>{let firstCharacter=substring[0];if(firstCharacter===`p`||firstCharacter===`P`){let longFormatter=longFormatters[firstCharacter];return longFormatter(substring,locale.formatLong)}return substring}).join(``).match(formattingTokensRegExp$1).map(substring=>{if(substring===`''`)return{isToken:!1,value:`'`};let firstCharacter=substring[0];if(firstCharacter===`'`)return{isToken:!1,value:cleanEscapedString$1(substring)};if(formatters[firstCharacter])return{isToken:!0,value:substring};if(firstCharacter.match(unescapedLatinCharacterRegExp$1))throw RangeError("Format string contains an unescaped latin alphabet character `"+firstCharacter+"`");return{isToken:!1,value:substring}});locale.localize.preprocessor&&(parts=locale.localize.preprocessor(originalDate,parts));let formatterOptions={firstWeekContainsDate,weekStartsOn,locale};return parts.map(part=>{if(!part.isToken)return part.value;let token=part.value;(!options?.useAdditionalWeekYearTokens&&isProtectedWeekYearToken(token)||!options?.useAdditionalDayOfYearTokens&&isProtectedDayOfYearToken(token))&&warnOrThrowProtectedError(token,formatStr,String(date));let formatter=formatters[token[0]];return formatter(originalDate,token,locale.localize,formatterOptions)}).join(``)}function cleanEscapedString$1(input){let matched=input.match(escapedStringRegExp$1);return matched?matched[1].replace(doubleQuoteRegExp$1,`'`):input}function getDefaultOptions(){return Object.assign({},getDefaultOptions$1())}function getISODay(date,options){let day=toDate(date,options?.in).getDay();return day===0?7:day}function transpose(date,constructor){let date_=isConstructor(constructor)?new constructor(0):constructFrom(constructor,0);return date_.setFullYear(date.getFullYear(),date.getMonth(),date.getDate()),date_.setHours(date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds()),date_}function isConstructor(constructor){return typeof constructor==`function`&&constructor.prototype?.constructor===constructor}const TIMEZONE_UNIT_PRIORITY=10;var Setter=class{subPriority=0;validate(_utcDate,_options){return!0}},ValueSetter=class extends Setter{constructor(value,validateValue,setValue,priority,subPriority){super(),this.value=value,this.validateValue=validateValue,this.setValue=setValue,this.priority=priority,subPriority&&(this.subPriority=subPriority)}validate(date,options){return this.validateValue(date,this.value,options)}set(date,flags,options){return this.setValue(date,flags,this.value,options)}},DateTimezoneSetter=class extends Setter{priority=10;subPriority=-1;constructor(context,reference){super(),this.context=context||(date=>constructFrom(reference,date))}set(date,flags){return flags.timestampIsSet?date:constructFrom(date,transpose(date,this.context))}},Parser=class{run(dateString,token,match$1,options){let result=this.parse(dateString,token,match$1,options);return result?{setter:new ValueSetter(result.value,this.validate,this.set,this.priority,this.subPriority),rest:result.rest}:null}validate(_utcDate,_value,_options){return!0}},EraParser=class extends Parser{priority=140;parse(dateString,token,match$1){switch(token){case`G`:case`GG`:case`GGG`:return match$1.era(dateString,{width:`abbreviated`})||match$1.era(dateString,{width:`narrow`});case`GGGGG`:return match$1.era(dateString,{width:`narrow`});case`GGGG`:default:return match$1.era(dateString,{width:`wide`})||match$1.era(dateString,{width:`abbreviated`})||match$1.era(dateString,{width:`narrow`})}}set(date,flags,value){return flags.era=value,date.setFullYear(value,0,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`R`,`u`,`t`,`T`]};const numericPatterns={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},timezonePatterns={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/};function mapValue(parseFnResult,mapFn){return parseFnResult&&{value:mapFn(parseFnResult.value),rest:parseFnResult.rest}}function parseNumericPattern(pattern,dateString){let matchResult=dateString.match(pattern);return matchResult?{value:parseInt(matchResult[0],10),rest:dateString.slice(matchResult[0].length)}:null}function parseTimezonePattern(pattern,dateString){let matchResult=dateString.match(pattern);if(!matchResult)return null;if(matchResult[0]===`Z`)return{value:0,rest:dateString.slice(1)};let sign=matchResult[1]===`+`?1:-1,hours=matchResult[2]?parseInt(matchResult[2],10):0,minutes=matchResult[3]?parseInt(matchResult[3],10):0,seconds=matchResult[5]?parseInt(matchResult[5],10):0;return{value:sign*(hours*36e5+minutes*6e4+seconds*1e3),rest:dateString.slice(matchResult[0].length)}}function parseAnyDigitsSigned(dateString){return parseNumericPattern(numericPatterns.anyDigitsSigned,dateString)}function parseNDigits(n,dateString){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigit,dateString);case 2:return parseNumericPattern(numericPatterns.twoDigits,dateString);case 3:return parseNumericPattern(numericPatterns.threeDigits,dateString);case 4:return parseNumericPattern(numericPatterns.fourDigits,dateString);default:return parseNumericPattern(RegExp(`^\\d{1,`+n+`}`),dateString)}}function parseNDigitsSigned(n,dateString){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigitSigned,dateString);case 2:return parseNumericPattern(numericPatterns.twoDigitsSigned,dateString);case 3:return parseNumericPattern(numericPatterns.threeDigitsSigned,dateString);case 4:return parseNumericPattern(numericPatterns.fourDigitsSigned,dateString);default:return parseNumericPattern(RegExp(`^-?\\d{1,`+n+`}`),dateString)}}function dayPeriodEnumToHours(dayPeriod){switch(dayPeriod){case`morning`:return 4;case`evening`:return 17;case`pm`:case`noon`:case`afternoon`:return 12;case`am`:case`midnight`:case`night`:default:return 0}}function normalizeTwoDigitYear(twoDigitYear,currentYear){let isCommonEra=currentYear>0,absCurrentYear=isCommonEra?currentYear:1-currentYear,result;if(absCurrentYear<=50)result=twoDigitYear||100;else{let rangeEnd=absCurrentYear+50,rangeEndCentury=Math.trunc(rangeEnd/100)*100,isPreviousCentury=twoDigitYear>=rangeEnd%100;result=twoDigitYear+rangeEndCentury-(isPreviousCentury?100:0)}return isCommonEra?result:1-result}function isLeapYearIndex(year){return year%400==0||year%4==0&&year%100!=0}var YearParser=class extends Parser{priority=130;incompatibleTokens=[`Y`,`R`,`u`,`w`,`I`,`i`,`e`,`c`,`t`,`T`];parse(dateString,token,match$1){let valueCallback=year=>({year,isTwoDigitYear:token===`yy`});switch(token){case`y`:return mapValue(parseNDigits(4,dateString),valueCallback);case`yo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`year`}),valueCallback);default:return mapValue(parseNDigits(token.length,dateString),valueCallback)}}validate(_date,value){return value.isTwoDigitYear||value.year>0}set(date,flags,value){let currentYear=date.getFullYear();if(value.isTwoDigitYear){let normalizedTwoDigitYear=normalizeTwoDigitYear(value.year,currentYear);return date.setFullYear(normalizedTwoDigitYear,0,1),date.setHours(0,0,0,0),date}let year=!(`era`in flags)||flags.era===1?value.year:1-value.year;return date.setFullYear(year,0,1),date.setHours(0,0,0,0),date}},LocalWeekYearParser=class extends Parser{priority=130;parse(dateString,token,match$1){let valueCallback=year=>({year,isTwoDigitYear:token===`YY`});switch(token){case`Y`:return mapValue(parseNDigits(4,dateString),valueCallback);case`Yo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`year`}),valueCallback);default:return mapValue(parseNDigits(token.length,dateString),valueCallback)}}validate(_date,value){return value.isTwoDigitYear||value.year>0}set(date,flags,value,options){let currentYear=getWeekYear(date,options);if(value.isTwoDigitYear){let normalizedTwoDigitYear=normalizeTwoDigitYear(value.year,currentYear);return date.setFullYear(normalizedTwoDigitYear,0,options.firstWeekContainsDate),date.setHours(0,0,0,0),startOfWeek(date,options)}let year=!(`era`in flags)||flags.era===1?value.year:1-value.year;return date.setFullYear(year,0,options.firstWeekContainsDate),date.setHours(0,0,0,0),startOfWeek(date,options)}incompatibleTokens=[`y`,`R`,`u`,`Q`,`q`,`M`,`L`,`I`,`d`,`D`,`i`,`t`,`T`]},ISOWeekYearParser=class extends Parser{priority=130;parse(dateString,token){return parseNDigitsSigned(token===`R`?4:token.length,dateString)}set(date,_flags,value){let firstWeekOfYear=constructFrom(date,0);return firstWeekOfYear.setFullYear(value,0,4),firstWeekOfYear.setHours(0,0,0,0),startOfISOWeek(firstWeekOfYear)}incompatibleTokens=[`G`,`y`,`Y`,`u`,`Q`,`q`,`M`,`L`,`w`,`d`,`D`,`e`,`c`,`t`,`T`]},ExtendedYearParser=class extends Parser{priority=130;parse(dateString,token){return parseNDigitsSigned(token===`u`?4:token.length,dateString)}set(date,_flags,value){return date.setFullYear(value,0,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`G`,`y`,`Y`,`R`,`w`,`I`,`i`,`e`,`c`,`t`,`T`]},QuarterParser=class extends Parser{priority=120;parse(dateString,token,match$1){switch(token){case`Q`:case`QQ`:return parseNDigits(token.length,dateString);case`Qo`:return match$1.ordinalNumber(dateString,{unit:`quarter`});case`QQQ`:return match$1.quarter(dateString,{width:`abbreviated`,context:`formatting`})||match$1.quarter(dateString,{width:`narrow`,context:`formatting`});case`QQQQQ`:return match$1.quarter(dateString,{width:`narrow`,context:`formatting`});case`QQQQ`:default:return match$1.quarter(dateString,{width:`wide`,context:`formatting`})||match$1.quarter(dateString,{width:`abbreviated`,context:`formatting`})||match$1.quarter(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=1&&value<=4}set(date,_flags,value){return date.setMonth((value-1)*3,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`M`,`L`,`w`,`I`,`d`,`D`,`i`,`e`,`c`,`t`,`T`]},StandAloneQuarterParser=class extends Parser{priority=120;parse(dateString,token,match$1){switch(token){case`q`:case`qq`:return parseNDigits(token.length,dateString);case`qo`:return match$1.ordinalNumber(dateString,{unit:`quarter`});case`qqq`:return match$1.quarter(dateString,{width:`abbreviated`,context:`standalone`})||match$1.quarter(dateString,{width:`narrow`,context:`standalone`});case`qqqqq`:return match$1.quarter(dateString,{width:`narrow`,context:`standalone`});case`qqqq`:default:return match$1.quarter(dateString,{width:`wide`,context:`standalone`})||match$1.quarter(dateString,{width:`abbreviated`,context:`standalone`})||match$1.quarter(dateString,{width:`narrow`,context:`standalone`})}}validate(_date,value){return value>=1&&value<=4}set(date,_flags,value){return date.setMonth((value-1)*3,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`Q`,`M`,`L`,`w`,`I`,`d`,`D`,`i`,`e`,`c`,`t`,`T`]},MonthParser=class extends Parser{incompatibleTokens=[`Y`,`R`,`q`,`Q`,`L`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`];priority=110;parse(dateString,token,match$1){let valueCallback=value=>value-1;switch(token){case`M`:return mapValue(parseNumericPattern(numericPatterns.month,dateString),valueCallback);case`MM`:return mapValue(parseNDigits(2,dateString),valueCallback);case`Mo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`month`}),valueCallback);case`MMM`:return match$1.month(dateString,{width:`abbreviated`,context:`formatting`})||match$1.month(dateString,{width:`narrow`,context:`formatting`});case`MMMMM`:return match$1.month(dateString,{width:`narrow`,context:`formatting`});case`MMMM`:default:return match$1.month(dateString,{width:`wide`,context:`formatting`})||match$1.month(dateString,{width:`abbreviated`,context:`formatting`})||match$1.month(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=0&&value<=11}set(date,_flags,value){return date.setMonth(value,1),date.setHours(0,0,0,0),date}},StandAloneMonthParser=class extends Parser{priority=110;parse(dateString,token,match$1){let valueCallback=value=>value-1;switch(token){case`L`:return mapValue(parseNumericPattern(numericPatterns.month,dateString),valueCallback);case`LL`:return mapValue(parseNDigits(2,dateString),valueCallback);case`Lo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`month`}),valueCallback);case`LLL`:return match$1.month(dateString,{width:`abbreviated`,context:`standalone`})||match$1.month(dateString,{width:`narrow`,context:`standalone`});case`LLLLL`:return match$1.month(dateString,{width:`narrow`,context:`standalone`});case`LLLL`:default:return match$1.month(dateString,{width:`wide`,context:`standalone`})||match$1.month(dateString,{width:`abbreviated`,context:`standalone`})||match$1.month(dateString,{width:`narrow`,context:`standalone`})}}validate(_date,value){return value>=0&&value<=11}set(date,_flags,value){return date.setMonth(value,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`M`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`]};function setWeek(date,week,options){let date_=toDate(date,options?.in),diff=getWeek(date_,options)-week;return date_.setDate(date_.getDate()-diff*7),toDate(date_,options?.in)}var LocalWeekParser=class extends Parser{priority=100;parse(dateString,token,match$1){switch(token){case`w`:return parseNumericPattern(numericPatterns.week,dateString);case`wo`:return match$1.ordinalNumber(dateString,{unit:`week`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=53}set(date,_flags,value,options){return startOfWeek(setWeek(date,value,options),options)}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`i`,`t`,`T`]};function setISOWeek(date,week,options){let _date=toDate(date,options?.in),diff=getISOWeek(_date,options)-week;return _date.setDate(_date.getDate()-diff*7),_date}var ISOWeekParser=class extends Parser{priority=100;parse(dateString,token,match$1){switch(token){case`I`:return parseNumericPattern(numericPatterns.week,dateString);case`Io`:return match$1.ordinalNumber(dateString,{unit:`week`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=53}set(date,_flags,value){return startOfISOWeek(setISOWeek(date,value))}incompatibleTokens=[`y`,`Y`,`u`,`q`,`Q`,`M`,`L`,`w`,`d`,`D`,`e`,`c`,`t`,`T`]};const DAYS_IN_MONTH=[31,28,31,30,31,30,31,31,30,31,30,31],DAYS_IN_MONTH_LEAP_YEAR=[31,29,31,30,31,30,31,31,30,31,30,31];var DateParser=class extends Parser{priority=90;subPriority=1;parse(dateString,token,match$1){switch(token){case`d`:return parseNumericPattern(numericPatterns.date,dateString);case`do`:return match$1.ordinalNumber(dateString,{unit:`date`});default:return parseNDigits(token.length,dateString)}}validate(date,value){let isLeapYear=isLeapYearIndex(date.getFullYear()),month=date.getMonth();return isLeapYear?value>=1&&value<=DAYS_IN_MONTH_LEAP_YEAR[month]:value>=1&&value<=DAYS_IN_MONTH[month]}set(date,_flags,value){return date.setDate(value),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`]},DayOfYearParser=class extends Parser{priority=90;subpriority=1;parse(dateString,token,match$1){switch(token){case`D`:case`DD`:return parseNumericPattern(numericPatterns.dayOfYear,dateString);case`Do`:return match$1.ordinalNumber(dateString,{unit:`date`});default:return parseNDigits(token.length,dateString)}}validate(date,value){return isLeapYearIndex(date.getFullYear())?value>=1&&value<=366:value>=1&&value<=365}set(date,_flags,value){return date.setMonth(0,value),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`M`,`L`,`w`,`I`,`d`,`E`,`i`,`e`,`c`,`t`,`T`]};function setDay(date,day,options){let defaultOptions$1=getDefaultOptions$1(),weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0,date_=toDate(date,options?.in),currentDay=date_.getDay(),dayIndex=(day%7+7)%7,delta=7-weekStartsOn;return addDays(date_,day<0||day>6?day-(currentDay+delta)%7:(dayIndex+delta)%7-(currentDay+delta)%7,options)}var DayParser=class extends Parser{priority=90;parse(dateString,token,match$1){switch(token){case`E`:case`EE`:case`EEE`:return match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`EEEEE`:return match$1.day(dateString,{width:`narrow`,context:`formatting`});case`EEEEEE`:return match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`EEEE`:default:return match$1.day(dateString,{width:`wide`,context:`formatting`})||match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=0&&value<=6}set(date,_flags,value,options){return date=setDay(date,value,options),date.setHours(0,0,0,0),date}incompatibleTokens=[`D`,`i`,`e`,`c`,`t`,`T`]},LocalDayParser=class extends Parser{priority=90;parse(dateString,token,match$1,options){let valueCallback=value=>{let wholeWeekDays=Math.floor((value-1)/7)*7;return(value+options.weekStartsOn+6)%7+wholeWeekDays};switch(token){case`e`:case`ee`:return mapValue(parseNDigits(token.length,dateString),valueCallback);case`eo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`day`}),valueCallback);case`eee`:return match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`eeeee`:return match$1.day(dateString,{width:`narrow`,context:`formatting`});case`eeeeee`:return match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`eeee`:default:return match$1.day(dateString,{width:`wide`,context:`formatting`})||match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=0&&value<=6}set(date,_flags,value,options){return date=setDay(date,value,options),date.setHours(0,0,0,0),date}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`E`,`i`,`c`,`t`,`T`]},StandAloneLocalDayParser=class extends Parser{priority=90;parse(dateString,token,match$1,options){let valueCallback=value=>{let wholeWeekDays=Math.floor((value-1)/7)*7;return(value+options.weekStartsOn+6)%7+wholeWeekDays};switch(token){case`c`:case`cc`:return mapValue(parseNDigits(token.length,dateString),valueCallback);case`co`:return mapValue(match$1.ordinalNumber(dateString,{unit:`day`}),valueCallback);case`ccc`:return match$1.day(dateString,{width:`abbreviated`,context:`standalone`})||match$1.day(dateString,{width:`short`,context:`standalone`})||match$1.day(dateString,{width:`narrow`,context:`standalone`});case`ccccc`:return match$1.day(dateString,{width:`narrow`,context:`standalone`});case`cccccc`:return match$1.day(dateString,{width:`short`,context:`standalone`})||match$1.day(dateString,{width:`narrow`,context:`standalone`});case`cccc`:default:return match$1.day(dateString,{width:`wide`,context:`standalone`})||match$1.day(dateString,{width:`abbreviated`,context:`standalone`})||match$1.day(dateString,{width:`short`,context:`standalone`})||match$1.day(dateString,{width:`narrow`,context:`standalone`})}}validate(_date,value){return value>=0&&value<=6}set(date,_flags,value,options){return date=setDay(date,value,options),date.setHours(0,0,0,0),date}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`E`,`i`,`e`,`t`,`T`]};function setISODay(date,day,options){let date_=toDate(date,options?.in);return addDays(date_,day-getISODay(date_,options),options)}var ISODayParser=class extends Parser{priority=90;parse(dateString,token,match$1){let valueCallback=value=>value===0?7:value;switch(token){case`i`:case`ii`:return parseNDigits(token.length,dateString);case`io`:return match$1.ordinalNumber(dateString,{unit:`day`});case`iii`:return mapValue(match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback);case`iiiii`:return mapValue(match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback);case`iiiiii`:return mapValue(match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback);case`iiii`:default:return mapValue(match$1.day(dateString,{width:`wide`,context:`formatting`})||match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback)}}validate(_date,value){return value>=1&&value<=7}set(date,_flags,value){return date=setISODay(date,value),date.setHours(0,0,0,0),date}incompatibleTokens=[`y`,`Y`,`u`,`q`,`Q`,`M`,`L`,`w`,`d`,`D`,`E`,`e`,`c`,`t`,`T`]},AMPMParser=class extends Parser{priority=80;parse(dateString,token,match$1){switch(token){case`a`:case`aa`:case`aaa`:return match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`aaaaa`:return match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`aaaa`:default:return match$1.dayPeriod(dateString,{width:`wide`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`})}}set(date,_flags,value){return date.setHours(dayPeriodEnumToHours(value),0,0,0),date}incompatibleTokens=[`b`,`B`,`H`,`k`,`t`,`T`]},AMPMMidnightParser=class extends Parser{priority=80;parse(dateString,token,match$1){switch(token){case`b`:case`bb`:case`bbb`:return match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`bbbbb`:return match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`bbbb`:default:return match$1.dayPeriod(dateString,{width:`wide`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`})}}set(date,_flags,value){return date.setHours(dayPeriodEnumToHours(value),0,0,0),date}incompatibleTokens=[`a`,`B`,`H`,`k`,`t`,`T`]},DayPeriodParser=class extends Parser{priority=80;parse(dateString,token,match$1){switch(token){case`B`:case`BB`:case`BBB`:return match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`BBBBB`:return match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`BBBB`:default:return match$1.dayPeriod(dateString,{width:`wide`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`})}}set(date,_flags,value){return date.setHours(dayPeriodEnumToHours(value),0,0,0),date}incompatibleTokens=[`a`,`b`,`t`,`T`]},Hour1to12Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`h`:return parseNumericPattern(numericPatterns.hour12h,dateString);case`ho`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=12}set(date,_flags,value){let isPM=date.getHours()>=12;return isPM&&value<12?date.setHours(value+12,0,0,0):!isPM&&value===12?date.setHours(0,0,0,0):date.setHours(value,0,0,0),date}incompatibleTokens=[`H`,`K`,`k`,`t`,`T`]},Hour0to23Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`H`:return parseNumericPattern(numericPatterns.hour23h,dateString);case`Ho`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=23}set(date,_flags,value){return date.setHours(value,0,0,0),date}incompatibleTokens=[`a`,`b`,`h`,`K`,`k`,`t`,`T`]},Hour0To11Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`K`:return parseNumericPattern(numericPatterns.hour11h,dateString);case`Ko`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=11}set(date,_flags,value){return date.getHours()>=12&&value<12?date.setHours(value+12,0,0,0):date.setHours(value,0,0,0),date}incompatibleTokens=[`h`,`H`,`k`,`t`,`T`]},Hour1To24Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`k`:return parseNumericPattern(numericPatterns.hour24h,dateString);case`ko`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=24}set(date,_flags,value){let hours=value<=24?value%24:value;return date.setHours(hours,0,0,0),date}incompatibleTokens=[`a`,`b`,`h`,`H`,`K`,`t`,`T`]},MinuteParser=class extends Parser{priority=60;parse(dateString,token,match$1){switch(token){case`m`:return parseNumericPattern(numericPatterns.minute,dateString);case`mo`:return match$1.ordinalNumber(dateString,{unit:`minute`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=59}set(date,_flags,value){return date.setMinutes(value,0,0),date}incompatibleTokens=[`t`,`T`]},SecondParser=class extends Parser{priority=50;parse(dateString,token,match$1){switch(token){case`s`:return parseNumericPattern(numericPatterns.second,dateString);case`so`:return match$1.ordinalNumber(dateString,{unit:`second`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=59}set(date,_flags,value){return date.setSeconds(value,0),date}incompatibleTokens=[`t`,`T`]},FractionOfSecondParser=class extends Parser{priority=30;parse(dateString,token){return mapValue(parseNDigits(token.length,dateString),value=>Math.trunc(value*10**(-token.length+3)))}set(date,_flags,value){return date.setMilliseconds(value),date}incompatibleTokens=[`t`,`T`]},ISOTimezoneWithZParser=class extends Parser{priority=10;parse(dateString,token){switch(token){case`X`:return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,dateString);case`XX`:return parseTimezonePattern(timezonePatterns.basic,dateString);case`XXXX`:return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,dateString);case`XXXXX`:return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,dateString);case`XXX`:default:return parseTimezonePattern(timezonePatterns.extended,dateString)}}set(date,flags,value){return flags.timestampIsSet?date:constructFrom(date,date.getTime()-getTimezoneOffsetInMilliseconds(date)-value)}incompatibleTokens=[`t`,`T`,`x`]},ISOTimezoneParser=class extends Parser{priority=10;parse(dateString,token){switch(token){case`x`:return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,dateString);case`xx`:return parseTimezonePattern(timezonePatterns.basic,dateString);case`xxxx`:return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,dateString);case`xxxxx`:return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,dateString);case`xxx`:default:return parseTimezonePattern(timezonePatterns.extended,dateString)}}set(date,flags,value){return flags.timestampIsSet?date:constructFrom(date,date.getTime()-getTimezoneOffsetInMilliseconds(date)-value)}incompatibleTokens=[`t`,`T`,`X`]},TimestampSecondsParser=class extends Parser{priority=40;parse(dateString){return parseAnyDigitsSigned(dateString)}set(date,_flags,value){return[constructFrom(date,value*1e3),{timestampIsSet:!0}]}incompatibleTokens=`*`},TimestampMillisecondsParser=class extends Parser{priority=20;parse(dateString){return parseAnyDigitsSigned(dateString)}set(date,_flags,value){return[constructFrom(date,value),{timestampIsSet:!0}]}incompatibleTokens=`*`};const parsers={G:new EraParser,y:new YearParser,Y:new LocalWeekYearParser,R:new ISOWeekYearParser,u:new ExtendedYearParser,Q:new QuarterParser,q:new StandAloneQuarterParser,M:new MonthParser,L:new StandAloneMonthParser,w:new LocalWeekParser,I:new ISOWeekParser,d:new DateParser,D:new DayOfYearParser,E:new DayParser,e:new LocalDayParser,c:new StandAloneLocalDayParser,i:new ISODayParser,a:new AMPMParser,b:new AMPMMidnightParser,B:new DayPeriodParser,h:new Hour1to12Parser,H:new Hour0to23Parser,K:new Hour0To11Parser,k:new Hour1To24Parser,m:new MinuteParser,s:new SecondParser,S:new FractionOfSecondParser,X:new ISOTimezoneWithZParser,x:new ISOTimezoneParser,t:new TimestampSecondsParser,T:new TimestampMillisecondsParser},formattingTokensRegExp=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp=/^'([^]*?)'?$/,doubleQuoteRegExp=/''/g,notWhitespaceRegExp=/\S/,unescapedLatinCharacterRegExp=/[a-zA-Z]/;function parse(dateStr,formatStr,referenceDate,options){let invalidDate=()=>constructFrom(options?.in||referenceDate,NaN),defaultOptions$1=getDefaultOptions(),locale=options?.locale??defaultOptions$1.locale??enUS,firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0;if(!formatStr)return dateStr?invalidDate():toDate(referenceDate,options?.in);let subFnOptions={firstWeekContainsDate,weekStartsOn,locale},setters=[new DateTimezoneSetter(options?.in,referenceDate)],tokens=formatStr.match(longFormattingTokensRegExp).map(substring=>{let firstCharacter=substring[0];if(firstCharacter in longFormatters){let longFormatter=longFormatters[firstCharacter];return longFormatter(substring,locale.formatLong)}return substring}).join(``).match(formattingTokensRegExp),usedTokens=[];for(let token of tokens){!options?.useAdditionalWeekYearTokens&&isProtectedWeekYearToken(token)&&warnOrThrowProtectedError(token,formatStr,dateStr),!options?.useAdditionalDayOfYearTokens&&isProtectedDayOfYearToken(token)&&warnOrThrowProtectedError(token,formatStr,dateStr);let firstCharacter=token[0],parser=parsers[firstCharacter];if(parser){let{incompatibleTokens}=parser;if(Array.isArray(incompatibleTokens)){let incompatibleToken=usedTokens.find(usedToken=>incompatibleTokens.includes(usedToken.token)||usedToken.token===firstCharacter);if(incompatibleToken)throw RangeError(`The format string mustn't contain \`${incompatibleToken.fullToken}\` and \`${token}\` at the same time`)}else if(parser.incompatibleTokens===`*`&&usedTokens.length>0)throw RangeError(`The format string mustn't contain \`${token}\` and any other token at the same time`);usedTokens.push({token:firstCharacter,fullToken:token});let parseResult=parser.run(dateStr,token,locale.match,subFnOptions);if(!parseResult)return invalidDate();setters.push(parseResult.setter),dateStr=parseResult.rest}else{if(firstCharacter.match(unescapedLatinCharacterRegExp))throw RangeError("Format string contains an unescaped latin alphabet character `"+firstCharacter+"`");if(token===`''`?token=`'`:firstCharacter===`'`&&(token=cleanEscapedString(token)),dateStr.indexOf(token)===0)dateStr=dateStr.slice(token.length);else return invalidDate()}}if(dateStr.length>0&&notWhitespaceRegExp.test(dateStr))return invalidDate();let uniquePrioritySetters=setters.map(setter=>setter.priority).sort((a,b$2)=>b$2-a).filter((priority,index,array)=>array.indexOf(priority)===index).map(priority=>setters.filter(setter=>setter.priority===priority).sort((a,b$2)=>b$2.subPriority-a.subPriority)).map(setterArray=>setterArray[0]),date=toDate(referenceDate,options?.in);if(isNaN(+date))return invalidDate();let flags={};for(let setter of uniquePrioritySetters){if(!setter.validate(date,subFnOptions))return invalidDate();let result=setter.set(date,flags,subFnOptions);Array.isArray(result)?(date=result[0],Object.assign(flags,result[1])):date=result}return date}function cleanEscapedString(input){return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp,`'`)}var version=`0.4.0`,require_kind_of=__commonJSMin(((exports,module)=>{var toString=Object.prototype.toString;module.exports=function(val){if(val===void 0)return`undefined`;if(val===null)return`null`;var type=typeof val;if(type===`boolean`)return`boolean`;if(type===`string`)return`string`;if(type===`number`)return`number`;if(type===`symbol`)return`symbol`;if(type===`function`)return isGeneratorFn(val)?`generatorfunction`:`function`;if(isArray(val))return`array`;if(isBuffer(val))return`buffer`;if(isArguments(val))return`arguments`;if(isDate(val))return`date`;if(isError(val))return`error`;if(isRegexp(val))return`regexp`;switch(ctorName(val)){case`Symbol`:return`symbol`;case`Promise`:return`promise`;case`WeakMap`:return`weakmap`;case`WeakSet`:return`weakset`;case`Map`:return`map`;case`Set`:return`set`;case`Int8Array`:return`int8array`;case`Uint8Array`:return`uint8array`;case`Uint8ClampedArray`:return`uint8clampedarray`;case`Int16Array`:return`int16array`;case`Uint16Array`:return`uint16array`;case`Int32Array`:return`int32array`;case`Uint32Array`:return`uint32array`;case`Float32Array`:return`float32array`;case`Float64Array`:return`float64array`}if(isGeneratorObj(val))return`generator`;switch(type=toString.call(val),type){case`[object Object]`:return`object`;case`[object Map Iterator]`:return`mapiterator`;case`[object Set Iterator]`:return`setiterator`;case`[object String Iterator]`:return`stringiterator`;case`[object Array Iterator]`:return`arrayiterator`}return type.slice(8,-1).toLowerCase().replace(/\s/g,``)};function ctorName(val){return typeof val.constructor==`function`?val.constructor.name:null}function isArray(val){return Array.isArray?Array.isArray(val):val instanceof Array}function isError(val){return val instanceof Error||typeof val.message==`string`&&val.constructor&&typeof val.constructor.stackTraceLimit==`number`}function isDate(val){return val instanceof Date?!0:typeof val.toDateString==`function`&&typeof val.getDate==`function`&&typeof val.setDate==`function`}function isRegexp(val){return val instanceof RegExp?!0:typeof val.flags==`string`&&typeof val.ignoreCase==`boolean`&&typeof val.multiline==`boolean`&&typeof val.global==`boolean`}function isGeneratorFn(name,val){return ctorName(name)===`GeneratorFunction`}function isGeneratorObj(val){return typeof val.throw==`function`&&typeof val.return==`function`&&typeof val.next==`function`}function isArguments(val){try{if(typeof val.length==`number`&&typeof val.callee==`function`)return!0}catch(err){if(err.message.indexOf(`callee`)!==-1)return!0}return!1}function isBuffer(val){return val.constructor&&typeof val.constructor.isBuffer==`function`?val.constructor.isBuffer(val):!1}})),require_is_extendable=__commonJSMin(((exports,module)=>{module.exports=function(val){return val!=null&&(typeof val==`object`||typeof val==`function`)}})),require_extend_shallow=__commonJSMin(((exports,module)=>{var isObject=require_is_extendable();module.exports=function(o$1){isObject(o$1)||(o$1={});for(var len=arguments.length,i=1;i<len;i++){var obj=arguments[i];isObject(obj)&&assign(o$1,obj)}return o$1};function assign(a,b$2){for(var key in b$2)hasOwn(b$2,key)&&(a[key]=b$2[key])}function hasOwn(obj,key){return Object.prototype.hasOwnProperty.call(obj,key)}})),require_section_matter=__commonJSMin(((exports,module)=>{var typeOf=require_kind_of(),extend=require_extend_shallow();module.exports=function(input,options){typeof options==`function`&&(options={parse:options});var file=toObject(input),opts=extend({},{section_delimiter:`---`,parse:identity},options),delim=opts.section_delimiter,lines=file.content.split(/\r?\n/),sections=null,section=createSection(),content=[],stack=[];function initSections(val){file.content=val,sections=[],content=[]}function closeSection(val){stack.length&&(section.key=getKey(stack[0],delim),section.content=val,opts.parse(section,sections),sections.push(section),section=createSection(),content=[],stack=[])}for(var i=0;i<lines.length;i++){var line=lines[i],len=stack.length,ln=line.trim();if(isDelimiter(ln,delim)){if(ln.length===3&&i!==0){if(len===0||len===2){content.push(line);continue}stack.push(ln),section.data=content.join(`
107
+ `))}outputVersion(){let{name}=this.cli,{versionNumber}=this.cli.globalCommand;versionNumber&&console.log(`${name}/${versionNumber} ${platformInfo}`)}checkRequiredArgs(){let minimalArgsCount=this.args.filter(arg=>arg.required).length;if(this.cli.args.length<minimalArgsCount)throw new CACError(`missing required args for command \`${this.rawName}\``)}checkUnknownOptions(){let{options,globalCommand}=this.cli;if(!this.config.allowUnknownOptions){for(let name of Object.keys(options))if(name!==`--`&&!this.hasOption(name)&&!globalCommand.hasOption(name))throw new CACError(`Unknown option \`${name.length>1?`--${name}`:`-${name}`}\``)}}checkOptionValue(){let{options:parsedOptions,globalCommand}=this.cli,options=[...globalCommand.options,...this.options];for(let option of options){let value=parsedOptions[option.name.split(`.`)[0]];if(option.required){let hasNegated=options.some(o$1=>o$1.negated&&o$1.names.includes(option.name));if(value===!0||value===!1&&!hasNegated)throw new CACError(`option \`${option.rawName}\` value is missing`)}}}},GlobalCommand=class extends Command{constructor(cli$1){super(`@@global@@`,``,{},cli$1)}},__assign=Object.assign,CAC=class extends EventEmitter{constructor(name=``){super(),this.name=name,this.commands=[],this.rawArgs=[],this.args=[],this.options={},this.globalCommand=new GlobalCommand(this),this.globalCommand.usage(`<command> [options]`)}usage(text){return this.globalCommand.usage(text),this}command(rawName,description,config){let command=new Command(rawName,description||``,config,this);return command.globalCommand=this.globalCommand,this.commands.push(command),command}option(rawName,description,config){return this.globalCommand.option(rawName,description,config),this}help(callback){return this.globalCommand.option(`-h, --help`,`Display this message`),this.globalCommand.helpCallback=callback,this.showHelpOnExit=!0,this}version(version$1,customFlags=`-v, --version`){return this.globalCommand.version(version$1,customFlags),this.showVersionOnExit=!0,this}example(example){return this.globalCommand.example(example),this}outputHelp(){this.matchedCommand?this.matchedCommand.outputHelp():this.globalCommand.outputHelp()}outputVersion(){this.globalCommand.outputVersion()}setParsedInfo({args,options},matchedCommand,matchedCommandName){return this.args=args,this.options=options,matchedCommand&&(this.matchedCommand=matchedCommand),matchedCommandName&&(this.matchedCommandName=matchedCommandName),this}unsetMatchedCommand(){this.matchedCommand=void 0,this.matchedCommandName=void 0}parse(argv=processArgs,{run=!0}={}){this.rawArgs=argv,this.name||=argv[1]?getFileName(argv[1]):`cli`;let shouldParse=!0;for(let command of this.commands){let parsed=this.mri(argv.slice(2),command),commandName=parsed.args[0];if(command.isMatched(commandName)){shouldParse=!1;let parsedInfo=__assign(__assign({},parsed),{args:parsed.args.slice(1)});this.setParsedInfo(parsedInfo,command,commandName),this.emit(`command:${commandName}`,command)}}if(shouldParse){for(let command of this.commands)if(command.name===``){shouldParse=!1;let parsed=this.mri(argv.slice(2),command);this.setParsedInfo(parsed,command),this.emit(`command:!`,command)}}if(shouldParse){let parsed=this.mri(argv.slice(2));this.setParsedInfo(parsed)}this.options.help&&this.showHelpOnExit&&(this.outputHelp(),run=!1,this.unsetMatchedCommand()),this.options.version&&this.showVersionOnExit&&this.matchedCommandName==null&&(this.outputVersion(),run=!1,this.unsetMatchedCommand());let parsedArgv={args:this.args,options:this.options};return run&&this.runMatchedCommand(),!this.matchedCommand&&this.args[0]&&this.emit(`command:*`),parsedArgv}mri(argv,command){let cliOptions=[...this.globalCommand.options,...command?command.options:[]],mriOptions=getMriOptions(cliOptions),argsAfterDoubleDashes=[],doubleDashesIndex=argv.indexOf(`--`);doubleDashesIndex>-1&&(argsAfterDoubleDashes=argv.slice(doubleDashesIndex+1),argv=argv.slice(0,doubleDashesIndex));let parsed=mri2(argv,mriOptions);parsed=Object.keys(parsed).reduce((res,name)=>__assign(__assign({},res),{[camelcaseOptionName(name)]:parsed[name]}),{_:[]});let args=parsed._,options={"--":argsAfterDoubleDashes},ignoreDefault=command&&command.config.ignoreOptionDefaultValue?command.config.ignoreOptionDefaultValue:this.globalCommand.config.ignoreOptionDefaultValue,transforms=Object.create(null);for(let cliOption of cliOptions){if(!ignoreDefault&&cliOption.config.default!==void 0)for(let name of cliOption.names)options[name]=cliOption.config.default;Array.isArray(cliOption.config.type)&&transforms[cliOption.name]===void 0&&(transforms[cliOption.name]=Object.create(null),transforms[cliOption.name].shouldTransform=!0,transforms[cliOption.name].transformFunction=cliOption.config.type[0])}for(let key of Object.keys(parsed))key!==`_`&&(setDotProp(options,key.split(`.`),parsed[key]),setByType(options,transforms));return{args,options}}runMatchedCommand(){let{args,options,matchedCommand:command}=this;if(!command||!command.commandAction)return;command.checkUnknownOptions(),command.checkOptionValue(),command.checkRequiredArgs();let actionArgs=[];return command.args.forEach((arg,index)=>{arg.variadic?actionArgs.push(args.slice(index)):actionArgs.push(args[index])}),actionArgs.push(options),command.commandAction.apply(this,actionArgs)}};const cac=(name=``)=>new CAC(name),daysInYear=365.2425,maxTime=10**8*24*60*60*1e3,millisecondsInWeek=6048e5,millisecondsInDay=864e5,millisecondsInMinute=6e4,millisecondsInHour=36e5,millisecondsInSecond=1e3,secondsInHour=3600,secondsInDay=3600*24,secondsInWeek=secondsInDay*7,secondsInYear=secondsInDay*365.2425,secondsInMonth=31556952/12,secondsInQuarter=2629746*3,constructFromSymbol=Symbol.for(`constructDateFrom`);function constructFrom(date,value){return typeof date==`function`?date(value):date&&typeof date==`object`&&constructFromSymbol in date?date[constructFromSymbol](value):date instanceof Date?new date.constructor(value):new Date(value)}function toDate(argument,context){return constructFrom(context||argument,argument)}function addDays(date,amount,options){let _date=toDate(date,options?.in);return isNaN(amount)?constructFrom(options?.in||date,NaN):(amount&&_date.setDate(_date.getDate()+amount),_date)}let defaultOptions={};function getDefaultOptions$1(){return defaultOptions}function startOfWeek(date,options){let defaultOptions$1=getDefaultOptions$1(),weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0,_date=toDate(date,options?.in),day=_date.getDay(),diff=(day<weekStartsOn?7:0)+day-weekStartsOn;return _date.setDate(_date.getDate()-diff),_date.setHours(0,0,0,0),_date}function startOfISOWeek(date,options){return startOfWeek(date,{...options,weekStartsOn:1})}function getISOWeekYear(date,options){let _date=toDate(date,options?.in),year=_date.getFullYear(),fourthOfJanuaryOfNextYear=constructFrom(_date,0);fourthOfJanuaryOfNextYear.setFullYear(year+1,0,4),fourthOfJanuaryOfNextYear.setHours(0,0,0,0);let startOfNextYear=startOfISOWeek(fourthOfJanuaryOfNextYear),fourthOfJanuaryOfThisYear=constructFrom(_date,0);fourthOfJanuaryOfThisYear.setFullYear(year,0,4),fourthOfJanuaryOfThisYear.setHours(0,0,0,0);let startOfThisYear=startOfISOWeek(fourthOfJanuaryOfThisYear);return _date.getTime()>=startOfNextYear.getTime()?year+1:_date.getTime()>=startOfThisYear.getTime()?year:year-1}function getTimezoneOffsetInMilliseconds(date){let _date=toDate(date),utcDate=new Date(Date.UTC(_date.getFullYear(),_date.getMonth(),_date.getDate(),_date.getHours(),_date.getMinutes(),_date.getSeconds(),_date.getMilliseconds()));return utcDate.setUTCFullYear(_date.getFullYear()),date-+utcDate}function normalizeDates(context,...dates){let normalize=constructFrom.bind(null,context||dates.find(date=>typeof date==`object`));return dates.map(normalize)}function startOfDay(date,options){let _date=toDate(date,options?.in);return _date.setHours(0,0,0,0),_date}function differenceInCalendarDays(laterDate,earlierDate,options){let[laterDate_,earlierDate_]=normalizeDates(options?.in,laterDate,earlierDate),laterStartOfDay=startOfDay(laterDate_),earlierStartOfDay=startOfDay(earlierDate_),laterTimestamp=+laterStartOfDay-getTimezoneOffsetInMilliseconds(laterStartOfDay),earlierTimestamp=+earlierStartOfDay-getTimezoneOffsetInMilliseconds(earlierStartOfDay);return Math.round((laterTimestamp-earlierTimestamp)/864e5)}function startOfISOWeekYear(date,options){let year=getISOWeekYear(date,options),fourthOfJanuary=constructFrom(options?.in||date,0);return fourthOfJanuary.setFullYear(year,0,4),fourthOfJanuary.setHours(0,0,0,0),startOfISOWeek(fourthOfJanuary)}function isDate(value){return value instanceof Date||typeof value==`object`&&Object.prototype.toString.call(value)===`[object Date]`}function isValid(date){return!(!isDate(date)&&typeof date!=`number`||isNaN(+toDate(date)))}function startOfYear(date,options){let date_=toDate(date,options?.in);return date_.setFullYear(date_.getFullYear(),0,1),date_.setHours(0,0,0,0),date_}const formatDistanceLocale={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},formatDistance=(token,count,options)=>{let result,tokenValue=formatDistanceLocale[token];return result=typeof tokenValue==`string`?tokenValue:count===1?tokenValue.one:tokenValue.other.replace(`{{count}}`,count.toString()),options?.addSuffix?options.comparison&&options.comparison>0?`in `+result:result+` ago`:result};function buildFormatLongFn(args){return(options={})=>{let width=options.width?String(options.width):args.defaultWidth;return args.formats[width]||args.formats[args.defaultWidth]}}const dateFormats={full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},timeFormats={full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},dateTimeFormats={full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},formatLong={date:buildFormatLongFn({formats:dateFormats,defaultWidth:`full`}),time:buildFormatLongFn({formats:timeFormats,defaultWidth:`full`}),dateTime:buildFormatLongFn({formats:dateTimeFormats,defaultWidth:`full`})},formatRelativeLocale={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},formatRelative=(token,_date,_baseDate,_options)=>formatRelativeLocale[token];function buildLocalizeFn(args){return(value,options)=>{let context=options?.context?String(options.context):`standalone`,valuesArray;if(context===`formatting`&&args.formattingValues){let defaultWidth=args.defaultFormattingWidth||args.defaultWidth,width=options?.width?String(options.width):defaultWidth;valuesArray=args.formattingValues[width]||args.formattingValues[defaultWidth]}else{let defaultWidth=args.defaultWidth,width=options?.width?String(options.width):args.defaultWidth;valuesArray=args.values[width]||args.values[defaultWidth]}let index=args.argumentCallback?args.argumentCallback(value):value;return valuesArray[index]}}const eraValues={narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},quarterValues={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},monthValues={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},dayValues={narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},dayPeriodValues={narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},formattingDayPeriodValues={narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},ordinalNumber=(dirtyNumber,_options)=>{let number=Number(dirtyNumber),rem100=number%100;if(rem100>20||rem100<10)switch(rem100%10){case 1:return number+`st`;case 2:return number+`nd`;case 3:return number+`rd`}return number+`th`},localize={ordinalNumber,era:buildLocalizeFn({values:eraValues,defaultWidth:`wide`}),quarter:buildLocalizeFn({values:quarterValues,defaultWidth:`wide`,argumentCallback:quarter=>quarter-1}),month:buildLocalizeFn({values:monthValues,defaultWidth:`wide`}),day:buildLocalizeFn({values:dayValues,defaultWidth:`wide`}),dayPeriod:buildLocalizeFn({values:dayPeriodValues,defaultWidth:`wide`,formattingValues:formattingDayPeriodValues,defaultFormattingWidth:`wide`})};function buildMatchFn(args){return(string,options={})=>{let width=options.width,matchPattern=width&&args.matchPatterns[width]||args.matchPatterns[args.defaultMatchWidth],matchResult=string.match(matchPattern);if(!matchResult)return null;let matchedString=matchResult[0],parsePatterns=width&&args.parsePatterns[width]||args.parsePatterns[args.defaultParseWidth],key=Array.isArray(parsePatterns)?findIndex(parsePatterns,pattern=>pattern.test(matchedString)):findKey(parsePatterns,pattern=>pattern.test(matchedString)),value;value=args.valueCallback?args.valueCallback(key):key,value=options.valueCallback?options.valueCallback(value):value;let rest=string.slice(matchedString.length);return{value,rest}}}function findKey(object,predicate){for(let key in object)if(Object.prototype.hasOwnProperty.call(object,key)&&predicate(object[key]))return key}function findIndex(array,predicate){for(let key=0;key<array.length;key++)if(predicate(array[key]))return key}function buildMatchPatternFn(args){return(string,options={})=>{let matchResult=string.match(args.matchPattern);if(!matchResult)return null;let matchedString=matchResult[0],parseResult=string.match(args.parsePattern);if(!parseResult)return null;let value=args.valueCallback?args.valueCallback(parseResult[0]):parseResult[0];value=options.valueCallback?options.valueCallback(value):value;let rest=string.slice(matchedString.length);return{value,rest}}}const matchOrdinalNumberPattern=/^(\d+)(th|st|nd|rd)?/i,parseOrdinalNumberPattern=/\d+/i,matchEraPatterns={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},parseEraPatterns={any:[/^b/i,/^(a|c)/i]},matchQuarterPatterns={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},parseQuarterPatterns={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},parseMonthPatterns={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},parseDayPatterns={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},matchDayPeriodPatterns={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},parseDayPeriodPatterns={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},match={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern,parsePattern:parseOrdinalNumberPattern,valueCallback:value=>parseInt(value,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns,defaultMatchWidth:`wide`,parsePatterns:parseEraPatterns,defaultParseWidth:`any`}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns,defaultMatchWidth:`wide`,parsePatterns:parseQuarterPatterns,defaultParseWidth:`any`,valueCallback:index=>index+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns,defaultMatchWidth:`wide`,parsePatterns:parseMonthPatterns,defaultParseWidth:`any`}),day:buildMatchFn({matchPatterns:matchDayPatterns,defaultMatchWidth:`wide`,parsePatterns:parseDayPatterns,defaultParseWidth:`any`}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns,defaultMatchWidth:`any`,parsePatterns:parseDayPeriodPatterns,defaultParseWidth:`any`})},enUS={code:`en-US`,formatDistance,formatLong,formatRelative,localize,match,options:{weekStartsOn:0,firstWeekContainsDate:1}};function getDayOfYear(date,options){let _date=toDate(date,options?.in);return differenceInCalendarDays(_date,startOfYear(_date))+1}function getISOWeek(date,options){let _date=toDate(date,options?.in),diff=startOfISOWeek(_date)-+startOfISOWeekYear(_date);return Math.round(diff/millisecondsInWeek)+1}function getWeekYear(date,options){let _date=toDate(date,options?.in),year=_date.getFullYear(),defaultOptions$1=getDefaultOptions$1(),firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,firstWeekOfNextYear=constructFrom(options?.in||date,0);firstWeekOfNextYear.setFullYear(year+1,0,firstWeekContainsDate),firstWeekOfNextYear.setHours(0,0,0,0);let startOfNextYear=startOfWeek(firstWeekOfNextYear,options),firstWeekOfThisYear=constructFrom(options?.in||date,0);firstWeekOfThisYear.setFullYear(year,0,firstWeekContainsDate),firstWeekOfThisYear.setHours(0,0,0,0);let startOfThisYear=startOfWeek(firstWeekOfThisYear,options);return+_date>=+startOfNextYear?year+1:+_date>=+startOfThisYear?year:year-1}function startOfWeekYear(date,options){let defaultOptions$1=getDefaultOptions$1(),firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,year=getWeekYear(date,options),firstWeek=constructFrom(options?.in||date,0);return firstWeek.setFullYear(year,0,firstWeekContainsDate),firstWeek.setHours(0,0,0,0),startOfWeek(firstWeek,options)}function getWeek(date,options){let _date=toDate(date,options?.in),diff=startOfWeek(_date,options)-+startOfWeekYear(_date,options);return Math.round(diff/millisecondsInWeek)+1}function addLeadingZeros(number,targetLength){return(number<0?`-`:``)+Math.abs(number).toString().padStart(targetLength,`0`)}const lightFormatters={y(date,token){let signedYear=date.getFullYear(),year=signedYear>0?signedYear:1-signedYear;return addLeadingZeros(token===`yy`?year%100:year,token.length)},M(date,token){let month=date.getMonth();return token===`M`?String(month+1):addLeadingZeros(month+1,2)},d(date,token){return addLeadingZeros(date.getDate(),token.length)},a(date,token){let dayPeriodEnumValue=date.getHours()/12>=1?`pm`:`am`;switch(token){case`a`:case`aa`:return dayPeriodEnumValue.toUpperCase();case`aaa`:return dayPeriodEnumValue;case`aaaaa`:return dayPeriodEnumValue[0];case`aaaa`:default:return dayPeriodEnumValue===`am`?`a.m.`:`p.m.`}},h(date,token){return addLeadingZeros(date.getHours()%12||12,token.length)},H(date,token){return addLeadingZeros(date.getHours(),token.length)},m(date,token){return addLeadingZeros(date.getMinutes(),token.length)},s(date,token){return addLeadingZeros(date.getSeconds(),token.length)},S(date,token){let numberOfDigits=token.length,milliseconds=date.getMilliseconds();return addLeadingZeros(Math.trunc(milliseconds*10**(numberOfDigits-3)),token.length)}},dayPeriodEnum={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},formatters={G:function(date,token,localize$1){let era=date.getFullYear()>0?1:0;switch(token){case`G`:case`GG`:case`GGG`:return localize$1.era(era,{width:`abbreviated`});case`GGGGG`:return localize$1.era(era,{width:`narrow`});case`GGGG`:default:return localize$1.era(era,{width:`wide`})}},y:function(date,token,localize$1){if(token===`yo`){let signedYear=date.getFullYear(),year=signedYear>0?signedYear:1-signedYear;return localize$1.ordinalNumber(year,{unit:`year`})}return lightFormatters.y(date,token)},Y:function(date,token,localize$1,options){let signedWeekYear=getWeekYear(date,options),weekYear=signedWeekYear>0?signedWeekYear:1-signedWeekYear;return token===`YY`?addLeadingZeros(weekYear%100,2):token===`Yo`?localize$1.ordinalNumber(weekYear,{unit:`year`}):addLeadingZeros(weekYear,token.length)},R:function(date,token){return addLeadingZeros(getISOWeekYear(date),token.length)},u:function(date,token){return addLeadingZeros(date.getFullYear(),token.length)},Q:function(date,token,localize$1){let quarter=Math.ceil((date.getMonth()+1)/3);switch(token){case`Q`:return String(quarter);case`QQ`:return addLeadingZeros(quarter,2);case`Qo`:return localize$1.ordinalNumber(quarter,{unit:`quarter`});case`QQQ`:return localize$1.quarter(quarter,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return localize$1.quarter(quarter,{width:`narrow`,context:`formatting`});case`QQQQ`:default:return localize$1.quarter(quarter,{width:`wide`,context:`formatting`})}},q:function(date,token,localize$1){let quarter=Math.ceil((date.getMonth()+1)/3);switch(token){case`q`:return String(quarter);case`qq`:return addLeadingZeros(quarter,2);case`qo`:return localize$1.ordinalNumber(quarter,{unit:`quarter`});case`qqq`:return localize$1.quarter(quarter,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return localize$1.quarter(quarter,{width:`narrow`,context:`standalone`});case`qqqq`:default:return localize$1.quarter(quarter,{width:`wide`,context:`standalone`})}},M:function(date,token,localize$1){let month=date.getMonth();switch(token){case`M`:case`MM`:return lightFormatters.M(date,token);case`Mo`:return localize$1.ordinalNumber(month+1,{unit:`month`});case`MMM`:return localize$1.month(month,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return localize$1.month(month,{width:`narrow`,context:`formatting`});case`MMMM`:default:return localize$1.month(month,{width:`wide`,context:`formatting`})}},L:function(date,token,localize$1){let month=date.getMonth();switch(token){case`L`:return String(month+1);case`LL`:return addLeadingZeros(month+1,2);case`Lo`:return localize$1.ordinalNumber(month+1,{unit:`month`});case`LLL`:return localize$1.month(month,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return localize$1.month(month,{width:`narrow`,context:`standalone`});case`LLLL`:default:return localize$1.month(month,{width:`wide`,context:`standalone`})}},w:function(date,token,localize$1,options){let week=getWeek(date,options);return token===`wo`?localize$1.ordinalNumber(week,{unit:`week`}):addLeadingZeros(week,token.length)},I:function(date,token,localize$1){let isoWeek=getISOWeek(date);return token===`Io`?localize$1.ordinalNumber(isoWeek,{unit:`week`}):addLeadingZeros(isoWeek,token.length)},d:function(date,token,localize$1){return token===`do`?localize$1.ordinalNumber(date.getDate(),{unit:`date`}):lightFormatters.d(date,token)},D:function(date,token,localize$1){let dayOfYear=getDayOfYear(date);return token===`Do`?localize$1.ordinalNumber(dayOfYear,{unit:`dayOfYear`}):addLeadingZeros(dayOfYear,token.length)},E:function(date,token,localize$1){let dayOfWeek=date.getDay();switch(token){case`E`:case`EE`:case`EEE`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`formatting`});case`EEEEEE`:return localize$1.day(dayOfWeek,{width:`short`,context:`formatting`});case`EEEE`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`formatting`})}},e:function(date,token,localize$1,options){let dayOfWeek=date.getDay(),localDayOfWeek=(dayOfWeek-options.weekStartsOn+8)%7||7;switch(token){case`e`:return String(localDayOfWeek);case`ee`:return addLeadingZeros(localDayOfWeek,2);case`eo`:return localize$1.ordinalNumber(localDayOfWeek,{unit:`day`});case`eee`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`formatting`});case`eeeee`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`formatting`});case`eeeeee`:return localize$1.day(dayOfWeek,{width:`short`,context:`formatting`});case`eeee`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`formatting`})}},c:function(date,token,localize$1,options){let dayOfWeek=date.getDay(),localDayOfWeek=(dayOfWeek-options.weekStartsOn+8)%7||7;switch(token){case`c`:return String(localDayOfWeek);case`cc`:return addLeadingZeros(localDayOfWeek,token.length);case`co`:return localize$1.ordinalNumber(localDayOfWeek,{unit:`day`});case`ccc`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`standalone`});case`ccccc`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`standalone`});case`cccccc`:return localize$1.day(dayOfWeek,{width:`short`,context:`standalone`});case`cccc`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`standalone`})}},i:function(date,token,localize$1){let dayOfWeek=date.getDay(),isoDayOfWeek=dayOfWeek===0?7:dayOfWeek;switch(token){case`i`:return String(isoDayOfWeek);case`ii`:return addLeadingZeros(isoDayOfWeek,token.length);case`io`:return localize$1.ordinalNumber(isoDayOfWeek,{unit:`day`});case`iii`:return localize$1.day(dayOfWeek,{width:`abbreviated`,context:`formatting`});case`iiiii`:return localize$1.day(dayOfWeek,{width:`narrow`,context:`formatting`});case`iiiiii`:return localize$1.day(dayOfWeek,{width:`short`,context:`formatting`});case`iiii`:default:return localize$1.day(dayOfWeek,{width:`wide`,context:`formatting`})}},a:function(date,token,localize$1){let dayPeriodEnumValue=date.getHours()/12>=1?`pm`:`am`;switch(token){case`a`:case`aa`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`});case`aaa`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`narrow`,context:`formatting`});case`aaaa`:default:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`wide`,context:`formatting`})}},b:function(date,token,localize$1){let hours=date.getHours(),dayPeriodEnumValue;switch(dayPeriodEnumValue=hours===12?dayPeriodEnum.noon:hours===0?dayPeriodEnum.midnight:hours/12>=1?`pm`:`am`,token){case`b`:case`bb`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`});case`bbb`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`narrow`,context:`formatting`});case`bbbb`:default:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`wide`,context:`formatting`})}},B:function(date,token,localize$1){let hours=date.getHours(),dayPeriodEnumValue;switch(dayPeriodEnumValue=hours>=17?dayPeriodEnum.evening:hours>=12?dayPeriodEnum.afternoon:hours>=4?dayPeriodEnum.morning:dayPeriodEnum.night,token){case`B`:case`BB`:case`BBB`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`narrow`,context:`formatting`});case`BBBB`:default:return localize$1.dayPeriod(dayPeriodEnumValue,{width:`wide`,context:`formatting`})}},h:function(date,token,localize$1){if(token===`ho`){let hours=date.getHours()%12;return hours===0&&(hours=12),localize$1.ordinalNumber(hours,{unit:`hour`})}return lightFormatters.h(date,token)},H:function(date,token,localize$1){return token===`Ho`?localize$1.ordinalNumber(date.getHours(),{unit:`hour`}):lightFormatters.H(date,token)},K:function(date,token,localize$1){let hours=date.getHours()%12;return token===`Ko`?localize$1.ordinalNumber(hours,{unit:`hour`}):addLeadingZeros(hours,token.length)},k:function(date,token,localize$1){let hours=date.getHours();return hours===0&&(hours=24),token===`ko`?localize$1.ordinalNumber(hours,{unit:`hour`}):addLeadingZeros(hours,token.length)},m:function(date,token,localize$1){return token===`mo`?localize$1.ordinalNumber(date.getMinutes(),{unit:`minute`}):lightFormatters.m(date,token)},s:function(date,token,localize$1){return token===`so`?localize$1.ordinalNumber(date.getSeconds(),{unit:`second`}):lightFormatters.s(date,token)},S:function(date,token){return lightFormatters.S(date,token)},X:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();if(timezoneOffset===0)return`Z`;switch(token){case`X`:return formatTimezoneWithOptionalMinutes(timezoneOffset);case`XXXX`:case`XX`:return formatTimezone(timezoneOffset);case`XXXXX`:case`XXX`:default:return formatTimezone(timezoneOffset,`:`)}},x:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();switch(token){case`x`:return formatTimezoneWithOptionalMinutes(timezoneOffset);case`xxxx`:case`xx`:return formatTimezone(timezoneOffset);case`xxxxx`:case`xxx`:default:return formatTimezone(timezoneOffset,`:`)}},O:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();switch(token){case`O`:case`OO`:case`OOO`:return`GMT`+formatTimezoneShort(timezoneOffset,`:`);case`OOOO`:default:return`GMT`+formatTimezone(timezoneOffset,`:`)}},z:function(date,token,_localize){let timezoneOffset=date.getTimezoneOffset();switch(token){case`z`:case`zz`:case`zzz`:return`GMT`+formatTimezoneShort(timezoneOffset,`:`);case`zzzz`:default:return`GMT`+formatTimezone(timezoneOffset,`:`)}},t:function(date,token,_localize){return addLeadingZeros(Math.trunc(date/1e3),token.length)},T:function(date,token,_localize){return addLeadingZeros(+date,token.length)}};function formatTimezoneShort(offset,delimiter=``){let sign=offset>0?`-`:`+`,absOffset=Math.abs(offset),hours=Math.trunc(absOffset/60),minutes=absOffset%60;return minutes===0?sign+String(hours):sign+String(hours)+delimiter+addLeadingZeros(minutes,2)}function formatTimezoneWithOptionalMinutes(offset,delimiter){return offset%60==0?(offset>0?`-`:`+`)+addLeadingZeros(Math.abs(offset)/60,2):formatTimezone(offset,delimiter)}function formatTimezone(offset,delimiter=``){let sign=offset>0?`-`:`+`,absOffset=Math.abs(offset),hours=addLeadingZeros(Math.trunc(absOffset/60),2),minutes=addLeadingZeros(absOffset%60,2);return sign+hours+delimiter+minutes}const dateLongFormatter=(pattern,formatLong$1)=>{switch(pattern){case`P`:return formatLong$1.date({width:`short`});case`PP`:return formatLong$1.date({width:`medium`});case`PPP`:return formatLong$1.date({width:`long`});case`PPPP`:default:return formatLong$1.date({width:`full`})}},timeLongFormatter=(pattern,formatLong$1)=>{switch(pattern){case`p`:return formatLong$1.time({width:`short`});case`pp`:return formatLong$1.time({width:`medium`});case`ppp`:return formatLong$1.time({width:`long`});case`pppp`:default:return formatLong$1.time({width:`full`})}},dateTimeLongFormatter=(pattern,formatLong$1)=>{let matchResult=pattern.match(/(P+)(p+)?/)||[],datePattern=matchResult[1],timePattern=matchResult[2];if(!timePattern)return dateLongFormatter(pattern,formatLong$1);let dateTimeFormat;switch(datePattern){case`P`:dateTimeFormat=formatLong$1.dateTime({width:`short`});break;case`PP`:dateTimeFormat=formatLong$1.dateTime({width:`medium`});break;case`PPP`:dateTimeFormat=formatLong$1.dateTime({width:`long`});break;case`PPPP`:default:dateTimeFormat=formatLong$1.dateTime({width:`full`});break}return dateTimeFormat.replace(`{{date}}`,dateLongFormatter(datePattern,formatLong$1)).replace(`{{time}}`,timeLongFormatter(timePattern,formatLong$1))},longFormatters={p:timeLongFormatter,P:dateTimeLongFormatter},dayOfYearTokenRE=/^D+$/,weekYearTokenRE=/^Y+$/,throwTokens=[`D`,`DD`,`YY`,`YYYY`];function isProtectedDayOfYearToken(token){return dayOfYearTokenRE.test(token)}function isProtectedWeekYearToken(token){return weekYearTokenRE.test(token)}function warnOrThrowProtectedError(token,format$1,input){let _message=message(token,format$1,input);if(console.warn(_message),throwTokens.includes(token))throw RangeError(_message)}function message(token,format$1,input){let subject=token[0]===`Y`?`years`:`days of the month`;return`Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format$1}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const formattingTokensRegExp$1=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp$1=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp$1=/^'([^]*?)'?$/,doubleQuoteRegExp$1=/''/g,unescapedLatinCharacterRegExp$1=/[a-zA-Z]/;function format(date,formatStr,options){let defaultOptions$1=getDefaultOptions$1(),locale=options?.locale??defaultOptions$1.locale??enUS,firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0,originalDate=toDate(date,options?.in);if(!isValid(originalDate))throw RangeError(`Invalid time value`);let parts=formatStr.match(longFormattingTokensRegExp$1).map(substring=>{let firstCharacter=substring[0];if(firstCharacter===`p`||firstCharacter===`P`){let longFormatter=longFormatters[firstCharacter];return longFormatter(substring,locale.formatLong)}return substring}).join(``).match(formattingTokensRegExp$1).map(substring=>{if(substring===`''`)return{isToken:!1,value:`'`};let firstCharacter=substring[0];if(firstCharacter===`'`)return{isToken:!1,value:cleanEscapedString$1(substring)};if(formatters[firstCharacter])return{isToken:!0,value:substring};if(firstCharacter.match(unescapedLatinCharacterRegExp$1))throw RangeError("Format string contains an unescaped latin alphabet character `"+firstCharacter+"`");return{isToken:!1,value:substring}});locale.localize.preprocessor&&(parts=locale.localize.preprocessor(originalDate,parts));let formatterOptions={firstWeekContainsDate,weekStartsOn,locale};return parts.map(part=>{if(!part.isToken)return part.value;let token=part.value;(!options?.useAdditionalWeekYearTokens&&isProtectedWeekYearToken(token)||!options?.useAdditionalDayOfYearTokens&&isProtectedDayOfYearToken(token))&&warnOrThrowProtectedError(token,formatStr,String(date));let formatter=formatters[token[0]];return formatter(originalDate,token,locale.localize,formatterOptions)}).join(``)}function cleanEscapedString$1(input){let matched=input.match(escapedStringRegExp$1);return matched?matched[1].replace(doubleQuoteRegExp$1,`'`):input}function getDefaultOptions(){return Object.assign({},getDefaultOptions$1())}function getISODay(date,options){let day=toDate(date,options?.in).getDay();return day===0?7:day}function transpose(date,constructor){let date_=isConstructor(constructor)?new constructor(0):constructFrom(constructor,0);return date_.setFullYear(date.getFullYear(),date.getMonth(),date.getDate()),date_.setHours(date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds()),date_}function isConstructor(constructor){return typeof constructor==`function`&&constructor.prototype?.constructor===constructor}const TIMEZONE_UNIT_PRIORITY=10;var Setter=class{subPriority=0;validate(_utcDate,_options){return!0}},ValueSetter=class extends Setter{constructor(value,validateValue,setValue,priority,subPriority){super(),this.value=value,this.validateValue=validateValue,this.setValue=setValue,this.priority=priority,subPriority&&(this.subPriority=subPriority)}validate(date,options){return this.validateValue(date,this.value,options)}set(date,flags,options){return this.setValue(date,flags,this.value,options)}},DateTimezoneSetter=class extends Setter{priority=10;subPriority=-1;constructor(context,reference){super(),this.context=context||(date=>constructFrom(reference,date))}set(date,flags){return flags.timestampIsSet?date:constructFrom(date,transpose(date,this.context))}},Parser=class{run(dateString,token,match$1,options){let result=this.parse(dateString,token,match$1,options);return result?{setter:new ValueSetter(result.value,this.validate,this.set,this.priority,this.subPriority),rest:result.rest}:null}validate(_utcDate,_value,_options){return!0}},EraParser=class extends Parser{priority=140;parse(dateString,token,match$1){switch(token){case`G`:case`GG`:case`GGG`:return match$1.era(dateString,{width:`abbreviated`})||match$1.era(dateString,{width:`narrow`});case`GGGGG`:return match$1.era(dateString,{width:`narrow`});case`GGGG`:default:return match$1.era(dateString,{width:`wide`})||match$1.era(dateString,{width:`abbreviated`})||match$1.era(dateString,{width:`narrow`})}}set(date,flags,value){return flags.era=value,date.setFullYear(value,0,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`R`,`u`,`t`,`T`]};const numericPatterns={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},timezonePatterns={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/};function mapValue(parseFnResult,mapFn){return parseFnResult&&{value:mapFn(parseFnResult.value),rest:parseFnResult.rest}}function parseNumericPattern(pattern,dateString){let matchResult=dateString.match(pattern);return matchResult?{value:parseInt(matchResult[0],10),rest:dateString.slice(matchResult[0].length)}:null}function parseTimezonePattern(pattern,dateString){let matchResult=dateString.match(pattern);if(!matchResult)return null;if(matchResult[0]===`Z`)return{value:0,rest:dateString.slice(1)};let sign=matchResult[1]===`+`?1:-1,hours=matchResult[2]?parseInt(matchResult[2],10):0,minutes=matchResult[3]?parseInt(matchResult[3],10):0,seconds=matchResult[5]?parseInt(matchResult[5],10):0;return{value:sign*(hours*36e5+minutes*6e4+seconds*1e3),rest:dateString.slice(matchResult[0].length)}}function parseAnyDigitsSigned(dateString){return parseNumericPattern(numericPatterns.anyDigitsSigned,dateString)}function parseNDigits(n,dateString){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigit,dateString);case 2:return parseNumericPattern(numericPatterns.twoDigits,dateString);case 3:return parseNumericPattern(numericPatterns.threeDigits,dateString);case 4:return parseNumericPattern(numericPatterns.fourDigits,dateString);default:return parseNumericPattern(RegExp(`^\\d{1,`+n+`}`),dateString)}}function parseNDigitsSigned(n,dateString){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigitSigned,dateString);case 2:return parseNumericPattern(numericPatterns.twoDigitsSigned,dateString);case 3:return parseNumericPattern(numericPatterns.threeDigitsSigned,dateString);case 4:return parseNumericPattern(numericPatterns.fourDigitsSigned,dateString);default:return parseNumericPattern(RegExp(`^-?\\d{1,`+n+`}`),dateString)}}function dayPeriodEnumToHours(dayPeriod){switch(dayPeriod){case`morning`:return 4;case`evening`:return 17;case`pm`:case`noon`:case`afternoon`:return 12;case`am`:case`midnight`:case`night`:default:return 0}}function normalizeTwoDigitYear(twoDigitYear,currentYear){let isCommonEra=currentYear>0,absCurrentYear=isCommonEra?currentYear:1-currentYear,result;if(absCurrentYear<=50)result=twoDigitYear||100;else{let rangeEnd=absCurrentYear+50,rangeEndCentury=Math.trunc(rangeEnd/100)*100,isPreviousCentury=twoDigitYear>=rangeEnd%100;result=twoDigitYear+rangeEndCentury-(isPreviousCentury?100:0)}return isCommonEra?result:1-result}function isLeapYearIndex(year){return year%400==0||year%4==0&&year%100!=0}var YearParser=class extends Parser{priority=130;incompatibleTokens=[`Y`,`R`,`u`,`w`,`I`,`i`,`e`,`c`,`t`,`T`];parse(dateString,token,match$1){let valueCallback=year=>({year,isTwoDigitYear:token===`yy`});switch(token){case`y`:return mapValue(parseNDigits(4,dateString),valueCallback);case`yo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`year`}),valueCallback);default:return mapValue(parseNDigits(token.length,dateString),valueCallback)}}validate(_date,value){return value.isTwoDigitYear||value.year>0}set(date,flags,value){let currentYear=date.getFullYear();if(value.isTwoDigitYear){let normalizedTwoDigitYear=normalizeTwoDigitYear(value.year,currentYear);return date.setFullYear(normalizedTwoDigitYear,0,1),date.setHours(0,0,0,0),date}let year=!(`era`in flags)||flags.era===1?value.year:1-value.year;return date.setFullYear(year,0,1),date.setHours(0,0,0,0),date}},LocalWeekYearParser=class extends Parser{priority=130;parse(dateString,token,match$1){let valueCallback=year=>({year,isTwoDigitYear:token===`YY`});switch(token){case`Y`:return mapValue(parseNDigits(4,dateString),valueCallback);case`Yo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`year`}),valueCallback);default:return mapValue(parseNDigits(token.length,dateString),valueCallback)}}validate(_date,value){return value.isTwoDigitYear||value.year>0}set(date,flags,value,options){let currentYear=getWeekYear(date,options);if(value.isTwoDigitYear){let normalizedTwoDigitYear=normalizeTwoDigitYear(value.year,currentYear);return date.setFullYear(normalizedTwoDigitYear,0,options.firstWeekContainsDate),date.setHours(0,0,0,0),startOfWeek(date,options)}let year=!(`era`in flags)||flags.era===1?value.year:1-value.year;return date.setFullYear(year,0,options.firstWeekContainsDate),date.setHours(0,0,0,0),startOfWeek(date,options)}incompatibleTokens=[`y`,`R`,`u`,`Q`,`q`,`M`,`L`,`I`,`d`,`D`,`i`,`t`,`T`]},ISOWeekYearParser=class extends Parser{priority=130;parse(dateString,token){return parseNDigitsSigned(token===`R`?4:token.length,dateString)}set(date,_flags,value){let firstWeekOfYear=constructFrom(date,0);return firstWeekOfYear.setFullYear(value,0,4),firstWeekOfYear.setHours(0,0,0,0),startOfISOWeek(firstWeekOfYear)}incompatibleTokens=[`G`,`y`,`Y`,`u`,`Q`,`q`,`M`,`L`,`w`,`d`,`D`,`e`,`c`,`t`,`T`]},ExtendedYearParser=class extends Parser{priority=130;parse(dateString,token){return parseNDigitsSigned(token===`u`?4:token.length,dateString)}set(date,_flags,value){return date.setFullYear(value,0,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`G`,`y`,`Y`,`R`,`w`,`I`,`i`,`e`,`c`,`t`,`T`]},QuarterParser=class extends Parser{priority=120;parse(dateString,token,match$1){switch(token){case`Q`:case`QQ`:return parseNDigits(token.length,dateString);case`Qo`:return match$1.ordinalNumber(dateString,{unit:`quarter`});case`QQQ`:return match$1.quarter(dateString,{width:`abbreviated`,context:`formatting`})||match$1.quarter(dateString,{width:`narrow`,context:`formatting`});case`QQQQQ`:return match$1.quarter(dateString,{width:`narrow`,context:`formatting`});case`QQQQ`:default:return match$1.quarter(dateString,{width:`wide`,context:`formatting`})||match$1.quarter(dateString,{width:`abbreviated`,context:`formatting`})||match$1.quarter(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=1&&value<=4}set(date,_flags,value){return date.setMonth((value-1)*3,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`M`,`L`,`w`,`I`,`d`,`D`,`i`,`e`,`c`,`t`,`T`]},StandAloneQuarterParser=class extends Parser{priority=120;parse(dateString,token,match$1){switch(token){case`q`:case`qq`:return parseNDigits(token.length,dateString);case`qo`:return match$1.ordinalNumber(dateString,{unit:`quarter`});case`qqq`:return match$1.quarter(dateString,{width:`abbreviated`,context:`standalone`})||match$1.quarter(dateString,{width:`narrow`,context:`standalone`});case`qqqqq`:return match$1.quarter(dateString,{width:`narrow`,context:`standalone`});case`qqqq`:default:return match$1.quarter(dateString,{width:`wide`,context:`standalone`})||match$1.quarter(dateString,{width:`abbreviated`,context:`standalone`})||match$1.quarter(dateString,{width:`narrow`,context:`standalone`})}}validate(_date,value){return value>=1&&value<=4}set(date,_flags,value){return date.setMonth((value-1)*3,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`Q`,`M`,`L`,`w`,`I`,`d`,`D`,`i`,`e`,`c`,`t`,`T`]},MonthParser=class extends Parser{incompatibleTokens=[`Y`,`R`,`q`,`Q`,`L`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`];priority=110;parse(dateString,token,match$1){let valueCallback=value=>value-1;switch(token){case`M`:return mapValue(parseNumericPattern(numericPatterns.month,dateString),valueCallback);case`MM`:return mapValue(parseNDigits(2,dateString),valueCallback);case`Mo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`month`}),valueCallback);case`MMM`:return match$1.month(dateString,{width:`abbreviated`,context:`formatting`})||match$1.month(dateString,{width:`narrow`,context:`formatting`});case`MMMMM`:return match$1.month(dateString,{width:`narrow`,context:`formatting`});case`MMMM`:default:return match$1.month(dateString,{width:`wide`,context:`formatting`})||match$1.month(dateString,{width:`abbreviated`,context:`formatting`})||match$1.month(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=0&&value<=11}set(date,_flags,value){return date.setMonth(value,1),date.setHours(0,0,0,0),date}},StandAloneMonthParser=class extends Parser{priority=110;parse(dateString,token,match$1){let valueCallback=value=>value-1;switch(token){case`L`:return mapValue(parseNumericPattern(numericPatterns.month,dateString),valueCallback);case`LL`:return mapValue(parseNDigits(2,dateString),valueCallback);case`Lo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`month`}),valueCallback);case`LLL`:return match$1.month(dateString,{width:`abbreviated`,context:`standalone`})||match$1.month(dateString,{width:`narrow`,context:`standalone`});case`LLLLL`:return match$1.month(dateString,{width:`narrow`,context:`standalone`});case`LLLL`:default:return match$1.month(dateString,{width:`wide`,context:`standalone`})||match$1.month(dateString,{width:`abbreviated`,context:`standalone`})||match$1.month(dateString,{width:`narrow`,context:`standalone`})}}validate(_date,value){return value>=0&&value<=11}set(date,_flags,value){return date.setMonth(value,1),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`M`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`]};function setWeek(date,week,options){let date_=toDate(date,options?.in),diff=getWeek(date_,options)-week;return date_.setDate(date_.getDate()-diff*7),toDate(date_,options?.in)}var LocalWeekParser=class extends Parser{priority=100;parse(dateString,token,match$1){switch(token){case`w`:return parseNumericPattern(numericPatterns.week,dateString);case`wo`:return match$1.ordinalNumber(dateString,{unit:`week`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=53}set(date,_flags,value,options){return startOfWeek(setWeek(date,value,options),options)}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`i`,`t`,`T`]};function setISOWeek(date,week,options){let _date=toDate(date,options?.in),diff=getISOWeek(_date,options)-week;return _date.setDate(_date.getDate()-diff*7),_date}var ISOWeekParser=class extends Parser{priority=100;parse(dateString,token,match$1){switch(token){case`I`:return parseNumericPattern(numericPatterns.week,dateString);case`Io`:return match$1.ordinalNumber(dateString,{unit:`week`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=53}set(date,_flags,value){return startOfISOWeek(setISOWeek(date,value))}incompatibleTokens=[`y`,`Y`,`u`,`q`,`Q`,`M`,`L`,`w`,`d`,`D`,`e`,`c`,`t`,`T`]};const DAYS_IN_MONTH=[31,28,31,30,31,30,31,31,30,31,30,31],DAYS_IN_MONTH_LEAP_YEAR=[31,29,31,30,31,30,31,31,30,31,30,31];var DateParser=class extends Parser{priority=90;subPriority=1;parse(dateString,token,match$1){switch(token){case`d`:return parseNumericPattern(numericPatterns.date,dateString);case`do`:return match$1.ordinalNumber(dateString,{unit:`date`});default:return parseNDigits(token.length,dateString)}}validate(date,value){let isLeapYear=isLeapYearIndex(date.getFullYear()),month=date.getMonth();return isLeapYear?value>=1&&value<=DAYS_IN_MONTH_LEAP_YEAR[month]:value>=1&&value<=DAYS_IN_MONTH[month]}set(date,_flags,value){return date.setDate(value),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`]},DayOfYearParser=class extends Parser{priority=90;subpriority=1;parse(dateString,token,match$1){switch(token){case`D`:case`DD`:return parseNumericPattern(numericPatterns.dayOfYear,dateString);case`Do`:return match$1.ordinalNumber(dateString,{unit:`date`});default:return parseNDigits(token.length,dateString)}}validate(date,value){return isLeapYearIndex(date.getFullYear())?value>=1&&value<=366:value>=1&&value<=365}set(date,_flags,value){return date.setMonth(0,value),date.setHours(0,0,0,0),date}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`M`,`L`,`w`,`I`,`d`,`E`,`i`,`e`,`c`,`t`,`T`]};function setDay(date,day,options){let defaultOptions$1=getDefaultOptions$1(),weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0,date_=toDate(date,options?.in),currentDay=date_.getDay(),dayIndex=(day%7+7)%7,delta=7-weekStartsOn;return addDays(date_,day<0||day>6?day-(currentDay+delta)%7:(dayIndex+delta)%7-(currentDay+delta)%7,options)}var DayParser=class extends Parser{priority=90;parse(dateString,token,match$1){switch(token){case`E`:case`EE`:case`EEE`:return match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`EEEEE`:return match$1.day(dateString,{width:`narrow`,context:`formatting`});case`EEEEEE`:return match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`EEEE`:default:return match$1.day(dateString,{width:`wide`,context:`formatting`})||match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=0&&value<=6}set(date,_flags,value,options){return date=setDay(date,value,options),date.setHours(0,0,0,0),date}incompatibleTokens=[`D`,`i`,`e`,`c`,`t`,`T`]},LocalDayParser=class extends Parser{priority=90;parse(dateString,token,match$1,options){let valueCallback=value=>{let wholeWeekDays=Math.floor((value-1)/7)*7;return(value+options.weekStartsOn+6)%7+wholeWeekDays};switch(token){case`e`:case`ee`:return mapValue(parseNDigits(token.length,dateString),valueCallback);case`eo`:return mapValue(match$1.ordinalNumber(dateString,{unit:`day`}),valueCallback);case`eee`:return match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`eeeee`:return match$1.day(dateString,{width:`narrow`,context:`formatting`});case`eeeeee`:return match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`});case`eeee`:default:return match$1.day(dateString,{width:`wide`,context:`formatting`})||match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`})}}validate(_date,value){return value>=0&&value<=6}set(date,_flags,value,options){return date=setDay(date,value,options),date.setHours(0,0,0,0),date}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`E`,`i`,`c`,`t`,`T`]},StandAloneLocalDayParser=class extends Parser{priority=90;parse(dateString,token,match$1,options){let valueCallback=value=>{let wholeWeekDays=Math.floor((value-1)/7)*7;return(value+options.weekStartsOn+6)%7+wholeWeekDays};switch(token){case`c`:case`cc`:return mapValue(parseNDigits(token.length,dateString),valueCallback);case`co`:return mapValue(match$1.ordinalNumber(dateString,{unit:`day`}),valueCallback);case`ccc`:return match$1.day(dateString,{width:`abbreviated`,context:`standalone`})||match$1.day(dateString,{width:`short`,context:`standalone`})||match$1.day(dateString,{width:`narrow`,context:`standalone`});case`ccccc`:return match$1.day(dateString,{width:`narrow`,context:`standalone`});case`cccccc`:return match$1.day(dateString,{width:`short`,context:`standalone`})||match$1.day(dateString,{width:`narrow`,context:`standalone`});case`cccc`:default:return match$1.day(dateString,{width:`wide`,context:`standalone`})||match$1.day(dateString,{width:`abbreviated`,context:`standalone`})||match$1.day(dateString,{width:`short`,context:`standalone`})||match$1.day(dateString,{width:`narrow`,context:`standalone`})}}validate(_date,value){return value>=0&&value<=6}set(date,_flags,value,options){return date=setDay(date,value,options),date.setHours(0,0,0,0),date}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`E`,`i`,`e`,`t`,`T`]};function setISODay(date,day,options){let date_=toDate(date,options?.in);return addDays(date_,day-getISODay(date_,options),options)}var ISODayParser=class extends Parser{priority=90;parse(dateString,token,match$1){let valueCallback=value=>value===0?7:value;switch(token){case`i`:case`ii`:return parseNDigits(token.length,dateString);case`io`:return match$1.ordinalNumber(dateString,{unit:`day`});case`iii`:return mapValue(match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback);case`iiiii`:return mapValue(match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback);case`iiiiii`:return mapValue(match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback);case`iiii`:default:return mapValue(match$1.day(dateString,{width:`wide`,context:`formatting`})||match$1.day(dateString,{width:`abbreviated`,context:`formatting`})||match$1.day(dateString,{width:`short`,context:`formatting`})||match$1.day(dateString,{width:`narrow`,context:`formatting`}),valueCallback)}}validate(_date,value){return value>=1&&value<=7}set(date,_flags,value){return date=setISODay(date,value),date.setHours(0,0,0,0),date}incompatibleTokens=[`y`,`Y`,`u`,`q`,`Q`,`M`,`L`,`w`,`d`,`D`,`E`,`e`,`c`,`t`,`T`]},AMPMParser=class extends Parser{priority=80;parse(dateString,token,match$1){switch(token){case`a`:case`aa`:case`aaa`:return match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`aaaaa`:return match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`aaaa`:default:return match$1.dayPeriod(dateString,{width:`wide`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`})}}set(date,_flags,value){return date.setHours(dayPeriodEnumToHours(value),0,0,0),date}incompatibleTokens=[`b`,`B`,`H`,`k`,`t`,`T`]},AMPMMidnightParser=class extends Parser{priority=80;parse(dateString,token,match$1){switch(token){case`b`:case`bb`:case`bbb`:return match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`bbbbb`:return match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`bbbb`:default:return match$1.dayPeriod(dateString,{width:`wide`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`})}}set(date,_flags,value){return date.setHours(dayPeriodEnumToHours(value),0,0,0),date}incompatibleTokens=[`a`,`B`,`H`,`k`,`t`,`T`]},DayPeriodParser=class extends Parser{priority=80;parse(dateString,token,match$1){switch(token){case`B`:case`BB`:case`BBB`:return match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`BBBBB`:return match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`});case`BBBB`:default:return match$1.dayPeriod(dateString,{width:`wide`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`abbreviated`,context:`formatting`})||match$1.dayPeriod(dateString,{width:`narrow`,context:`formatting`})}}set(date,_flags,value){return date.setHours(dayPeriodEnumToHours(value),0,0,0),date}incompatibleTokens=[`a`,`b`,`t`,`T`]},Hour1to12Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`h`:return parseNumericPattern(numericPatterns.hour12h,dateString);case`ho`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=12}set(date,_flags,value){let isPM=date.getHours()>=12;return isPM&&value<12?date.setHours(value+12,0,0,0):!isPM&&value===12?date.setHours(0,0,0,0):date.setHours(value,0,0,0),date}incompatibleTokens=[`H`,`K`,`k`,`t`,`T`]},Hour0to23Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`H`:return parseNumericPattern(numericPatterns.hour23h,dateString);case`Ho`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=23}set(date,_flags,value){return date.setHours(value,0,0,0),date}incompatibleTokens=[`a`,`b`,`h`,`K`,`k`,`t`,`T`]},Hour0To11Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`K`:return parseNumericPattern(numericPatterns.hour11h,dateString);case`Ko`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=11}set(date,_flags,value){return date.getHours()>=12&&value<12?date.setHours(value+12,0,0,0):date.setHours(value,0,0,0),date}incompatibleTokens=[`h`,`H`,`k`,`t`,`T`]},Hour1To24Parser=class extends Parser{priority=70;parse(dateString,token,match$1){switch(token){case`k`:return parseNumericPattern(numericPatterns.hour24h,dateString);case`ko`:return match$1.ordinalNumber(dateString,{unit:`hour`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=1&&value<=24}set(date,_flags,value){let hours=value<=24?value%24:value;return date.setHours(hours,0,0,0),date}incompatibleTokens=[`a`,`b`,`h`,`H`,`K`,`t`,`T`]},MinuteParser=class extends Parser{priority=60;parse(dateString,token,match$1){switch(token){case`m`:return parseNumericPattern(numericPatterns.minute,dateString);case`mo`:return match$1.ordinalNumber(dateString,{unit:`minute`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=59}set(date,_flags,value){return date.setMinutes(value,0,0),date}incompatibleTokens=[`t`,`T`]},SecondParser=class extends Parser{priority=50;parse(dateString,token,match$1){switch(token){case`s`:return parseNumericPattern(numericPatterns.second,dateString);case`so`:return match$1.ordinalNumber(dateString,{unit:`second`});default:return parseNDigits(token.length,dateString)}}validate(_date,value){return value>=0&&value<=59}set(date,_flags,value){return date.setSeconds(value,0),date}incompatibleTokens=[`t`,`T`]},FractionOfSecondParser=class extends Parser{priority=30;parse(dateString,token){return mapValue(parseNDigits(token.length,dateString),value=>Math.trunc(value*10**(-token.length+3)))}set(date,_flags,value){return date.setMilliseconds(value),date}incompatibleTokens=[`t`,`T`]},ISOTimezoneWithZParser=class extends Parser{priority=10;parse(dateString,token){switch(token){case`X`:return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,dateString);case`XX`:return parseTimezonePattern(timezonePatterns.basic,dateString);case`XXXX`:return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,dateString);case`XXXXX`:return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,dateString);case`XXX`:default:return parseTimezonePattern(timezonePatterns.extended,dateString)}}set(date,flags,value){return flags.timestampIsSet?date:constructFrom(date,date.getTime()-getTimezoneOffsetInMilliseconds(date)-value)}incompatibleTokens=[`t`,`T`,`x`]},ISOTimezoneParser=class extends Parser{priority=10;parse(dateString,token){switch(token){case`x`:return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,dateString);case`xx`:return parseTimezonePattern(timezonePatterns.basic,dateString);case`xxxx`:return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,dateString);case`xxxxx`:return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,dateString);case`xxx`:default:return parseTimezonePattern(timezonePatterns.extended,dateString)}}set(date,flags,value){return flags.timestampIsSet?date:constructFrom(date,date.getTime()-getTimezoneOffsetInMilliseconds(date)-value)}incompatibleTokens=[`t`,`T`,`X`]},TimestampSecondsParser=class extends Parser{priority=40;parse(dateString){return parseAnyDigitsSigned(dateString)}set(date,_flags,value){return[constructFrom(date,value*1e3),{timestampIsSet:!0}]}incompatibleTokens=`*`},TimestampMillisecondsParser=class extends Parser{priority=20;parse(dateString){return parseAnyDigitsSigned(dateString)}set(date,_flags,value){return[constructFrom(date,value),{timestampIsSet:!0}]}incompatibleTokens=`*`};const parsers={G:new EraParser,y:new YearParser,Y:new LocalWeekYearParser,R:new ISOWeekYearParser,u:new ExtendedYearParser,Q:new QuarterParser,q:new StandAloneQuarterParser,M:new MonthParser,L:new StandAloneMonthParser,w:new LocalWeekParser,I:new ISOWeekParser,d:new DateParser,D:new DayOfYearParser,E:new DayParser,e:new LocalDayParser,c:new StandAloneLocalDayParser,i:new ISODayParser,a:new AMPMParser,b:new AMPMMidnightParser,B:new DayPeriodParser,h:new Hour1to12Parser,H:new Hour0to23Parser,K:new Hour0To11Parser,k:new Hour1To24Parser,m:new MinuteParser,s:new SecondParser,S:new FractionOfSecondParser,X:new ISOTimezoneWithZParser,x:new ISOTimezoneParser,t:new TimestampSecondsParser,T:new TimestampMillisecondsParser},formattingTokensRegExp=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp=/^'([^]*?)'?$/,doubleQuoteRegExp=/''/g,notWhitespaceRegExp=/\S/,unescapedLatinCharacterRegExp=/[a-zA-Z]/;function parse(dateStr,formatStr,referenceDate,options){let invalidDate=()=>constructFrom(options?.in||referenceDate,NaN),defaultOptions$1=getDefaultOptions(),locale=options?.locale??defaultOptions$1.locale??enUS,firstWeekContainsDate=options?.firstWeekContainsDate??options?.locale?.options?.firstWeekContainsDate??defaultOptions$1.firstWeekContainsDate??defaultOptions$1.locale?.options?.firstWeekContainsDate??1,weekStartsOn=options?.weekStartsOn??options?.locale?.options?.weekStartsOn??defaultOptions$1.weekStartsOn??defaultOptions$1.locale?.options?.weekStartsOn??0;if(!formatStr)return dateStr?invalidDate():toDate(referenceDate,options?.in);let subFnOptions={firstWeekContainsDate,weekStartsOn,locale},setters=[new DateTimezoneSetter(options?.in,referenceDate)],tokens=formatStr.match(longFormattingTokensRegExp).map(substring=>{let firstCharacter=substring[0];if(firstCharacter in longFormatters){let longFormatter=longFormatters[firstCharacter];return longFormatter(substring,locale.formatLong)}return substring}).join(``).match(formattingTokensRegExp),usedTokens=[];for(let token of tokens){!options?.useAdditionalWeekYearTokens&&isProtectedWeekYearToken(token)&&warnOrThrowProtectedError(token,formatStr,dateStr),!options?.useAdditionalDayOfYearTokens&&isProtectedDayOfYearToken(token)&&warnOrThrowProtectedError(token,formatStr,dateStr);let firstCharacter=token[0],parser=parsers[firstCharacter];if(parser){let{incompatibleTokens}=parser;if(Array.isArray(incompatibleTokens)){let incompatibleToken=usedTokens.find(usedToken=>incompatibleTokens.includes(usedToken.token)||usedToken.token===firstCharacter);if(incompatibleToken)throw RangeError(`The format string mustn't contain \`${incompatibleToken.fullToken}\` and \`${token}\` at the same time`)}else if(parser.incompatibleTokens===`*`&&usedTokens.length>0)throw RangeError(`The format string mustn't contain \`${token}\` and any other token at the same time`);usedTokens.push({token:firstCharacter,fullToken:token});let parseResult=parser.run(dateStr,token,locale.match,subFnOptions);if(!parseResult)return invalidDate();setters.push(parseResult.setter),dateStr=parseResult.rest}else{if(firstCharacter.match(unescapedLatinCharacterRegExp))throw RangeError("Format string contains an unescaped latin alphabet character `"+firstCharacter+"`");if(token===`''`?token=`'`:firstCharacter===`'`&&(token=cleanEscapedString(token)),dateStr.indexOf(token)===0)dateStr=dateStr.slice(token.length);else return invalidDate()}}if(dateStr.length>0&&notWhitespaceRegExp.test(dateStr))return invalidDate();let uniquePrioritySetters=setters.map(setter=>setter.priority).sort((a,b$2)=>b$2-a).filter((priority,index,array)=>array.indexOf(priority)===index).map(priority=>setters.filter(setter=>setter.priority===priority).sort((a,b$2)=>b$2.subPriority-a.subPriority)).map(setterArray=>setterArray[0]),date=toDate(referenceDate,options?.in);if(isNaN(+date))return invalidDate();let flags={};for(let setter of uniquePrioritySetters){if(!setter.validate(date,subFnOptions))return invalidDate();let result=setter.set(date,flags,subFnOptions);Array.isArray(result)?(date=result[0],Object.assign(flags,result[1])):date=result}return date}function cleanEscapedString(input){return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp,`'`)}var version=`0.5.0`,require_kind_of=__commonJSMin(((exports,module)=>{var toString=Object.prototype.toString;module.exports=function(val){if(val===void 0)return`undefined`;if(val===null)return`null`;var type=typeof val;if(type===`boolean`)return`boolean`;if(type===`string`)return`string`;if(type===`number`)return`number`;if(type===`symbol`)return`symbol`;if(type===`function`)return isGeneratorFn(val)?`generatorfunction`:`function`;if(isArray(val))return`array`;if(isBuffer(val))return`buffer`;if(isArguments(val))return`arguments`;if(isDate(val))return`date`;if(isError(val))return`error`;if(isRegexp(val))return`regexp`;switch(ctorName(val)){case`Symbol`:return`symbol`;case`Promise`:return`promise`;case`WeakMap`:return`weakmap`;case`WeakSet`:return`weakset`;case`Map`:return`map`;case`Set`:return`set`;case`Int8Array`:return`int8array`;case`Uint8Array`:return`uint8array`;case`Uint8ClampedArray`:return`uint8clampedarray`;case`Int16Array`:return`int16array`;case`Uint16Array`:return`uint16array`;case`Int32Array`:return`int32array`;case`Uint32Array`:return`uint32array`;case`Float32Array`:return`float32array`;case`Float64Array`:return`float64array`}if(isGeneratorObj(val))return`generator`;switch(type=toString.call(val),type){case`[object Object]`:return`object`;case`[object Map Iterator]`:return`mapiterator`;case`[object Set Iterator]`:return`setiterator`;case`[object String Iterator]`:return`stringiterator`;case`[object Array Iterator]`:return`arrayiterator`}return type.slice(8,-1).toLowerCase().replace(/\s/g,``)};function ctorName(val){return typeof val.constructor==`function`?val.constructor.name:null}function isArray(val){return Array.isArray?Array.isArray(val):val instanceof Array}function isError(val){return val instanceof Error||typeof val.message==`string`&&val.constructor&&typeof val.constructor.stackTraceLimit==`number`}function isDate(val){return val instanceof Date?!0:typeof val.toDateString==`function`&&typeof val.getDate==`function`&&typeof val.setDate==`function`}function isRegexp(val){return val instanceof RegExp?!0:typeof val.flags==`string`&&typeof val.ignoreCase==`boolean`&&typeof val.multiline==`boolean`&&typeof val.global==`boolean`}function isGeneratorFn(name,val){return ctorName(name)===`GeneratorFunction`}function isGeneratorObj(val){return typeof val.throw==`function`&&typeof val.return==`function`&&typeof val.next==`function`}function isArguments(val){try{if(typeof val.length==`number`&&typeof val.callee==`function`)return!0}catch(err){if(err.message.indexOf(`callee`)!==-1)return!0}return!1}function isBuffer(val){return val.constructor&&typeof val.constructor.isBuffer==`function`?val.constructor.isBuffer(val):!1}})),require_is_extendable=__commonJSMin(((exports,module)=>{module.exports=function(val){return val!=null&&(typeof val==`object`||typeof val==`function`)}})),require_extend_shallow=__commonJSMin(((exports,module)=>{var isObject=require_is_extendable();module.exports=function(o$1){isObject(o$1)||(o$1={});for(var len=arguments.length,i=1;i<len;i++){var obj=arguments[i];isObject(obj)&&assign(o$1,obj)}return o$1};function assign(a,b$2){for(var key in b$2)hasOwn(b$2,key)&&(a[key]=b$2[key])}function hasOwn(obj,key){return Object.prototype.hasOwnProperty.call(obj,key)}})),require_section_matter=__commonJSMin(((exports,module)=>{var typeOf=require_kind_of(),extend=require_extend_shallow();module.exports=function(input,options){typeof options==`function`&&(options={parse:options});var file=toObject(input),opts=extend({},{section_delimiter:`---`,parse:identity},options),delim=opts.section_delimiter,lines=file.content.split(/\r?\n/),sections=null,section=createSection(),content=[],stack=[];function initSections(val){file.content=val,sections=[],content=[]}function closeSection(val){stack.length&&(section.key=getKey(stack[0],delim),section.content=val,opts.parse(section,sections),sections.push(section),section=createSection(),content=[],stack=[])}for(var i=0;i<lines.length;i++){var line=lines[i],len=stack.length,ln=line.trim();if(isDelimiter(ln,delim)){if(ln.length===3&&i!==0){if(len===0||len===2){content.push(line);continue}stack.push(ln),section.data=content.join(`
108
108
  `),content=[];continue}sections===null&&initSections(content.join(`
109
109
  `)),len===2&&closeSection(content.join(`
110
110
  `)),stack.push(ln);continue}content.push(line)}return sections===null?initSections(content.join(`
@@ -151,4 +151,13 @@ return `+str.trim()+`;
151
151
  `?str:str+`
152
152
  `}})),require_excerpt=__commonJSMin(((exports,module)=>{let defaults=require_defaults();module.exports=function(file,options){let opts=defaults(options);if(file.data??={},typeof opts.excerpt==`function`)return opts.excerpt(file,opts);let sep=file.data.excerpt_separator||opts.excerpt_separator;if(sep==null&&(opts.excerpt===!1||opts.excerpt==null))return file;let delimiter=typeof opts.excerpt==`string`?opts.excerpt:sep||opts.delimiters[0],idx=file.content.indexOf(delimiter);return idx!==-1&&(file.excerpt=file.content.slice(0,idx)),file}})),require_to_file=__commonJSMin(((exports,module)=>{let typeOf=require_kind_of(),stringify=require_stringify(),utils=require_utils();module.exports=function(file){return typeOf(file)!==`object`&&(file={content:file}),typeOf(file.data)!==`object`&&(file.data={}),file.contents&&file.content==null&&(file.content=file.contents),utils.define(file,`orig`,utils.toBuffer(file.content)),utils.define(file,`language`,file.language||``),utils.define(file,`matter`,file.matter||``),utils.define(file,`stringify`,function(data,options){return options&&options.language&&(file.language=options.language),stringify(file,data,options)}),file.content=utils.toString(file.content),file.isEmpty=!1,file.excerpt=``,file}})),require_parse=__commonJSMin(((exports,module)=>{let getEngine=require_engine(),defaults=require_defaults();module.exports=function(language,str,options){let opts=defaults(options),engine=getEngine(language,opts);if(typeof engine.parse!=`function`)throw TypeError(`expected "`+language+`.parse" to be a function`);return engine.parse(str,opts)}})),require_gray_matter=__commonJSMin(((exports,module)=>{let fs=__require(`fs`),sections=require_section_matter(),defaults=require_defaults(),stringify=require_stringify(),excerpt=require_excerpt(),engines=require_engines(),toFile=require_to_file(),parse=require_parse(),utils=require_utils();function matter(input,options){if(input===``)return{data:{},content:input,excerpt:``,orig:input};let file=toFile(input),cached=matter.cache[file.content];if(!options){if(cached)return file=Object.assign({},cached),file.orig=cached.orig,file;matter.cache[file.content]=file}return parseMatter(file,options)}function parseMatter(file,options){let opts=defaults(options),open=opts.delimiters[0],close=`
153
153
  `+opts.delimiters[1],str=file.content;opts.language&&(file.language=opts.language);let openLen=open.length;if(!utils.startsWith(str,open,openLen))return excerpt(file,opts),file;if(str.charAt(openLen)===open.slice(-1))return file;str=str.slice(openLen);let len=str.length,language=matter.language(str,opts);language.name&&(file.language=language.name,str=str.slice(language.raw.length));let closeIndex=str.indexOf(close);return closeIndex===-1&&(closeIndex=len),file.matter=str.slice(0,closeIndex),file.matter.replace(/^\s*#[^\n]+/gm,``).trim()===``?(file.isEmpty=!0,file.empty=file.content,file.data={}):file.data=parse(file.language,file.matter,opts),closeIndex===len?file.content=``:(file.content=str.slice(closeIndex+close.length),file.content[0]===`\r`&&(file.content=file.content.slice(1)),file.content[0]===`
154
- `&&(file.content=file.content.slice(1))),excerpt(file,opts),(opts.sections===!0||typeof opts.section==`function`)&&sections(file,opts.section),file}matter.engines=engines,matter.stringify=function(file,data,options){return typeof file==`string`&&(file=matter(file,options)),stringify(file,data,options)},matter.read=function(filepath,options){let file=matter(fs.readFileSync(filepath,`utf8`),options);return file.path=filepath,file},matter.test=function(str,options){return utils.startsWith(str,defaults(options).delimiters[0])},matter.language=function(str,options){let open=defaults(options).delimiters[0];matter.test(str)&&(str=str.slice(open.length));let language=str.slice(0,str.search(/\r?\n/));return{raw:language,name:language?language.trim():``}},matter.cache={},matter.clearCache=function(){matter.cache={}},module.exports=matter})),import_gray_matter=__toESM(require_gray_matter(),1);function createContentDirectory(date,title,hasVideo,hasImages,basePath=process$1.cwd()){let directoryPath=resolve(join(basePath,format(date,`yyyy`),format(date,`MM`),format(date,`dd`))),contentFilePath=join(directoryPath,`linkedin.md`);if(existsSync(contentFilePath))return M.info(`linkedin.md already exists at: ${contentFilePath}`),directoryPath;mkdirSync(directoryPath,{recursive:!0}),M.success(`Created directory: ${directoryPath}`);let frontmatter={title};return hasVideo&&(frontmatter.video=!0),hasImages&&(frontmatter.images=[null]),writeFileSync(contentFilePath,import_gray_matter.default.stringify(``,frontmatter),`utf-8`),M.success(`Created linkedin.md at: ${contentFilePath}`),directoryPath}function getRecentDateFolders(basePath=process$1.cwd()){let folders=[];try{let years=readdirSync(basePath).filter(item=>statSync(join(basePath,item)).isDirectory()&&/^\d{4}$/.test(item));for(let year of years){let yearPath=join(basePath,year),months=readdirSync(yearPath).filter(item=>statSync(join(yearPath,item)).isDirectory()&&/^\d{2}$/.test(item));for(let month of months){let monthPath=join(yearPath,month),days=readdirSync(monthPath).filter(item=>statSync(join(monthPath,item)).isDirectory()&&/^\d{2}$/.test(item));for(let day of days){let dayPath=join(monthPath,day);if(existsSync(join(dayPath,`linkedin.md`))){let dateStr=`${year}-${month}-${day}`;folders.push({path:dayPath,date:new Date(dateStr),displayPath:`${year}/${month}/${day}`})}}}}}catch(error){return M.error(`Error reading directories: ${error}`),[]}return folders.sort((a,b$2)=>b$2.date.getTime()-a.date.getTime()).slice(0,8)}function findImagesInDirectory(directoryPath){let imageExtensions=[`.jpg`,`.jpeg`,`.png`],images=[];try{let items=readdirSync(directoryPath);for(let item of items)if(statSync(join(directoryPath,item)).isFile()){let ext=item.toLowerCase().substring(item.lastIndexOf(`.`));imageExtensions.includes(ext)&&images.push(item)}}catch(error){M.error(`Error reading directory: ${error}`)}return images.sort()}function updateLinkedInFrontmatter(linkedinPath,images){try{let{data,content}=(0,import_gray_matter.default)(readFileSync(linkedinPath,`utf-8`));data.images=images.length>0?images:[null],writeFileSync(linkedinPath,import_gray_matter.default.stringify(content,data),`utf-8`),M.success(`Updated ${linkedinPath} with ${images.length} image(s)`)}catch(error){M.error(`Error updating frontmatter: ${error}`)}}async function promptForFolder(recentFolders){if(recentFolders.length===0)return M.warn(`No dated folders with linkedin.md found`),null;let folderChoice=await ve({message:`Select a folder to link images:`,options:recentFolders.map(folder=>({label:folder.displayPath,value:folder.path,hint:`Link images in ${folder.displayPath}`}))});return pD(folderChoice)&&(M.error(`Operation cancelled.`),process$1.exit(0)),recentFolders.find(f=>f.path===folderChoice)||null}async function linkImages(basePath=process$1.cwd()){let recentFolders=getRecentDateFolders(basePath);if(recentFolders.length===0){M.warn(`No dated folders with linkedin.md found`);return}let selectedFolder=await promptForFolder(recentFolders);if(!selectedFolder)return;let images=findImagesInDirectory(selectedFolder.path);if(images.length===0){M.info(`No images found in ${selectedFolder.displayPath}`),updateLinkedInFrontmatter(join(selectedFolder.path,`linkedin.md`),[]);return}M.info(`Found ${images.length} image(s): ${images.join(`, `)}`),updateLinkedInFrontmatter(join(selectedFolder.path,`linkedin.md`),images)}async function promptForDate(){let today=new Date,dateOptions=[];for(let i=0;i<7;i++){let formattedDate=format(addDays(today,i),`yyyy-MM-dd`),label=formattedDate,hint=`Create content for ${formattedDate}`;i===0?(label=`Today (${formattedDate})`,hint=`Create content for today`):i===1?(label=`Tomorrow (${formattedDate})`,hint=`Create content for tomorrow`):(label=`In ${i} days (${formattedDate})`,hint=`Create content for ${formattedDate}`),dateOptions.push({label,value:`day-${i}`,hint})}dateOptions.push({label:`Custom date`,value:`custom`,hint:`Enter a specific date`});let dateChoice=await ve({message:`When do you want to create content?`,options:dateOptions});if(pD(dateChoice)&&(M.error(`Operation cancelled.`),process$1.exit(0)),dateChoice!==`custom`)return addDays(today,Number.parseInt(dateChoice.split(`-`)[1]));let customDate=await he({message:`Enter date (YYYY-MM-DD):`,placeholder:format(today,`yyyy-MM-dd`),validate:value=>{if(!value)return`Date is required`;if(!/^\d{4}-\d{2}-\d{2}$/.test(value))return`Invalid date format. Please use YYYY-MM-DD`;try{let parsedDate=parse(value,`yyyy-MM-dd`,new Date);if(Number.isNaN(parsedDate.getTime()))return`Invalid date`}catch{return`Invalid date`}}});return pD(customDate)&&(M.error(`Operation cancelled.`),process$1.exit(0)),parse(customDate,`yyyy-MM-dd`,new Date)}async function promptForTitle(){let title=await he({message:`What is the title of your content?`,placeholder:`Enter content title`,validate:value=>{if(!value||value.trim().length===0)return`Title is required`}});return pD(title)&&(M.error(`Operation cancelled.`),process$1.exit(0)),title.trim()}async function promptForVideo(){let hasVideo=await ve({message:`Is a LinkedIn video planned?`,options:[{label:`Yes`,value:!0,hint:`Add video: true to frontmatter`},{label:`No`,value:!1,hint:`No video metadata`}]});return pD(hasVideo)&&(M.error(`Operation cancelled.`),process$1.exit(0)),hasVideo}async function promptForImages(){let hasImages=await ve({message:`Are there images?`,options:[{label:`Yes`,value:!0,hint:`Add images section to frontmatter`},{label:`No`,value:!1,hint:`No images metadata`}]});return pD(hasImages)&&(M.error(`Operation cancelled.`),process$1.exit(0)),hasImages}const cli=cac(`content-creation`);cli.command(`[path]`,`Create a dated content directory with linkedin.md file`).option(`--path <path>`,`Base path for content directory (defaults to current directory)`).action(async(pathArg,options)=>{Ie(`Content Creation - Create dated content directory`);let title=await promptForTitle(),hasVideo=await promptForVideo(),hasImages=await promptForImages(),date=await promptForDate();createContentDirectory(date,title,hasVideo,hasImages,pathArg||options?.path||process$1.cwd()),Se(`✓ Content directory created: ${format(date,`yyyy/MM/dd`)}/linkedin.md`)}),cli.command(`link-images [path]`,`Link images to LinkedIn frontmatter in recent folders`).option(`--path <path>`,`Base path for content directory (defaults to current directory)`).action(async(pathArg,options)=>{Ie(`Content Creation - Link Images to LinkedIn`),await linkImages(pathArg||options?.path||process$1.cwd()),Se(`✓ Images linked successfully`)}),cli.help(),cli.version(version),cli.parse();export{};
154
+ `&&(file.content=file.content.slice(1))),excerpt(file,opts),(opts.sections===!0||typeof opts.section==`function`)&&sections(file,opts.section),file}matter.engines=engines,matter.stringify=function(file,data,options){return typeof file==`string`&&(file=matter(file,options)),stringify(file,data,options)},matter.read=function(filepath,options){let file=matter(fs.readFileSync(filepath,`utf8`),options);return file.path=filepath,file},matter.test=function(str,options){return utils.startsWith(str,defaults(options).delimiters[0])},matter.language=function(str,options){let open=defaults(options).delimiters[0];matter.test(str)&&(str=str.slice(open.length));let language=str.slice(0,str.search(/\r?\n/));return{raw:language,name:language?language.trim():``}},matter.cache={},matter.clearCache=function(){matter.cache={}},module.exports=matter})),import_gray_matter=__toESM(require_gray_matter(),1);function createContentDirectory(date,title,hasVideo,hasImages,basePath=process$1.cwd()){let directoryPath=resolve(join(basePath,format(date,`yyyy`),format(date,`MM`),format(date,`dd`))),contentFilePath=join(directoryPath,`linkedin.md`);if(existsSync(contentFilePath))return M.info(`linkedin.md already exists at: ${contentFilePath}`),directoryPath;mkdirSync(directoryPath,{recursive:!0}),M.success(`Created directory: ${directoryPath}`);let frontmatter={title};hasVideo&&(frontmatter.video=!0),hasImages&&(frontmatter.images=[null]);let postContent=`
155
+
156
+ ---
157
+
158
+ 👨‍💻 Je m'appelle Estéban, et avec moi, viens explorer le web, aussi bien techniquement que humainement ! Si ça te parle, abonne-toi !
159
+ `;return hasVideo&&(postContent+=`
160
+ ---
161
+
162
+ **Script**
163
+ `),writeFileSync(contentFilePath,import_gray_matter.default.stringify(postContent,frontmatter),`utf-8`),M.success(`Created linkedin.md at: ${contentFilePath}`),directoryPath}function getRecentDateFolders(basePath=process$1.cwd()){let folders=[];try{let years=readdirSync(basePath).filter(item=>statSync(join(basePath,item)).isDirectory()&&/^\d{4}$/.test(item));for(let year of years){let yearPath=join(basePath,year),months=readdirSync(yearPath).filter(item=>statSync(join(yearPath,item)).isDirectory()&&/^\d{2}$/.test(item));for(let month of months){let monthPath=join(yearPath,month),days=readdirSync(monthPath).filter(item=>statSync(join(monthPath,item)).isDirectory()&&/^\d{2}$/.test(item));for(let day of days){let dayPath=join(monthPath,day);if(existsSync(join(dayPath,`linkedin.md`))){let dateStr=`${year}-${month}-${day}`;folders.push({path:dayPath,date:new Date(dateStr),displayPath:`${year}/${month}/${day}`})}}}}}catch(error){return M.error(`Error reading directories: ${error}`),[]}return folders.sort((a,b$2)=>b$2.date.getTime()-a.date.getTime()).slice(0,8)}function findImagesInDirectory(directoryPath){let imageExtensions=[`.jpg`,`.jpeg`,`.png`],images=[];try{let items=readdirSync(directoryPath);for(let item of items)if(statSync(join(directoryPath,item)).isFile()){let ext=item.toLowerCase().substring(item.lastIndexOf(`.`));imageExtensions.includes(ext)&&images.push(item)}}catch(error){M.error(`Error reading directory: ${error}`)}return images.sort()}function updateLinkedInFrontmatter(linkedinPath,images){try{let{data,content}=(0,import_gray_matter.default)(readFileSync(linkedinPath,`utf-8`));data.images=images.length>0?images:[null],writeFileSync(linkedinPath,import_gray_matter.default.stringify(content,data),`utf-8`),M.success(`Updated ${linkedinPath} with ${images.length} image(s)`)}catch(error){M.error(`Error updating frontmatter: ${error}`)}}async function promptForFolder(recentFolders){if(recentFolders.length===0)return M.warn(`No dated folders with linkedin.md found`),null;let folderChoice=await ve({message:`Select a folder to link images:`,options:recentFolders.map(folder=>({label:folder.displayPath,value:folder.path,hint:`Link images in ${folder.displayPath}`}))});return pD(folderChoice)&&(M.error(`Operation cancelled.`),process$1.exit(0)),recentFolders.find(f=>f.path===folderChoice)||null}async function linkImages(basePath=process$1.cwd()){let recentFolders=getRecentDateFolders(basePath);if(recentFolders.length===0){M.warn(`No dated folders with linkedin.md found`);return}let selectedFolder=await promptForFolder(recentFolders);if(!selectedFolder)return;let images=findImagesInDirectory(selectedFolder.path);if(images.length===0){M.info(`No images found in ${selectedFolder.displayPath}`),updateLinkedInFrontmatter(join(selectedFolder.path,`linkedin.md`),[]);return}M.info(`Found ${images.length} image(s): ${images.join(`, `)}`),updateLinkedInFrontmatter(join(selectedFolder.path,`linkedin.md`),images)}async function promptForDate(){let today=new Date,dateOptions=[];for(let i=0;i<7;i++){let formattedDate=format(addDays(today,i),`yyyy-MM-dd`),label=formattedDate,hint=`Create content for ${formattedDate}`;i===0?(label=`Today (${formattedDate})`,hint=`Create content for today`):i===1?(label=`Tomorrow (${formattedDate})`,hint=`Create content for tomorrow`):(label=`In ${i} days (${formattedDate})`,hint=`Create content for ${formattedDate}`),dateOptions.push({label,value:`day-${i}`,hint})}dateOptions.push({label:`Custom date`,value:`custom`,hint:`Enter a specific date`});let dateChoice=await ve({message:`When do you want to create content?`,options:dateOptions});if(pD(dateChoice)&&(M.error(`Operation cancelled.`),process$1.exit(0)),dateChoice!==`custom`)return addDays(today,Number.parseInt(dateChoice.split(`-`)[1]));let customDate=await he({message:`Enter date (YYYY-MM-DD):`,placeholder:format(today,`yyyy-MM-dd`),validate:value=>{if(!value)return`Date is required`;if(!/^\d{4}-\d{2}-\d{2}$/.test(value))return`Invalid date format. Please use YYYY-MM-DD`;try{let parsedDate=parse(value,`yyyy-MM-dd`,new Date);if(Number.isNaN(parsedDate.getTime()))return`Invalid date`}catch{return`Invalid date`}}});return pD(customDate)&&(M.error(`Operation cancelled.`),process$1.exit(0)),parse(customDate,`yyyy-MM-dd`,new Date)}async function promptForTitle(){let title=await he({message:`What is the title of your content?`,placeholder:`Enter content title`,validate:value=>{if(!value||value.trim().length===0)return`Title is required`}});return pD(title)&&(M.error(`Operation cancelled.`),process$1.exit(0)),title.trim()}async function promptForVideo(){let hasVideo=await ve({message:`Is a LinkedIn video planned?`,options:[{label:`Yes`,value:!0,hint:`Add video: true to frontmatter`},{label:`No`,value:!1,hint:`No video metadata`}]});return pD(hasVideo)&&(M.error(`Operation cancelled.`),process$1.exit(0)),hasVideo}async function promptForImages(){let hasImages=await ve({message:`Are there images?`,options:[{label:`Yes`,value:!0,hint:`Add images section to frontmatter`},{label:`No`,value:!1,hint:`No images metadata`}]});return pD(hasImages)&&(M.error(`Operation cancelled.`),process$1.exit(0)),hasImages}const cli=cac(`content-creation`);cli.command(`[path]`,`Create a dated content directory with linkedin.md file`).option(`--path <path>`,`Base path for content directory (defaults to current directory)`).action(async(pathArg,options)=>{Ie(`Content Creation - Create dated content directory`);let title=await promptForTitle(),hasVideo=await promptForVideo(),hasImages=await promptForImages(),date=await promptForDate();createContentDirectory(date,title,hasVideo,hasImages,pathArg||options?.path||process$1.cwd()),Se(`✓ Content directory created: ${format(date,`yyyy/MM/dd`)}/linkedin.md`)}),cli.command(`link-images [path]`,`Link images to LinkedIn frontmatter in recent folders`).option(`--path <path>`,`Base path for content directory (defaults to current directory)`).action(async(pathArg,options)=>{Ie(`Content Creation - Link Images to LinkedIn`),await linkImages(pathArg||options?.path||process$1.cwd()),Se(`✓ Images linked successfully`)}),cli.help(),cli.version(version),cli.parse();export{};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@barbapapazes/content-creation",
3
3
  "type": "module",
4
- "version": "0.4.0",
4
+ "version": "0.5.0",
5
5
  "author": "Estéban Soubiran <esteban@soubiran.dev>",
6
6
  "license": "MIT",
7
7
  "funding": "https://github.com/sponsors/Barbapapazes",