Skip to content

Commit

Permalink
fix(build): add workaround for buildOptimizer issue (valor-software#4799
Browse files Browse the repository at this point in the history
)

* fix(build): add workaround for buildOptimizer issue

* fix(build): clean up

* fix(build): return logic
  • Loading branch information
Domainv authored and leo6104 committed Oct 10, 2019
1 parent 3185d92 commit f04c936
Show file tree
Hide file tree
Showing 19 changed files with 652 additions and 504 deletions.
2 changes: 1 addition & 1 deletion angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"aot": true,
"extractLicenses": true,
"vendorChunk": true,
"buildOptimizer": false,
"buildOptimizer": true,
"fileReplacements": [
{
"replace": "demo/src/environments/environment.ts",
Expand Down
5 changes: 4 additions & 1 deletion src/chronos/format/format.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export function addFormatToken(token: string,
padded: [string, number, boolean],
ordinal: string,
callback: DateFormatterFn): void {

if (token) {
formatTokenFunctions[token] = callback;
}
Expand All @@ -36,7 +37,9 @@ export function addFormatToken(token: string,
}
}

export function makeFormatFunction(format: string): (date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string {
export function makeFormatFunction(format: string):
(date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string {

const array: string[] = format.match(formattingTokens);
const length = array.length;

Expand Down
64 changes: 52 additions & 12 deletions src/chronos/locale/locales.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@ import { baseConfig } from './locale.defaults';
import { hasOwnProp, isArray, isObject, isString, isUndefined, toInt } from '../utils/type-checks';
import { compareArrays } from '../utils/compare-arrays';

import { initWeek } from '../units/week';
import { initWeekYear } from '../units/week-year';
import { initYear } from '../units/year';
import { initTimezone } from '../units/timezone';
import { initTimestamp } from '../units/timestamp';
import { initSecond } from '../units/second';
import { initQuarter } from '../units/quarter';
import { initOffset } from '../units/offset';
import { initMinute } from '../units/minute';
import { initMillisecond } from '../units/millisecond';
import { initMonth } from '../units/month';
import { initHour } from '../units/hour';
import { initDayOfYear } from '../units/day-of-year';
import { initDayOfWeek } from '../units/day-of-week';
import { initDayOfMonth } from '../units/day-of-month';

const locales: { [key: string]: Locale } = {};
const localeFamilies: { [key: string]: {name: string; config: LocaleData}[] } = {};
let globalLocale: Locale;
Expand Down Expand Up @@ -198,6 +214,8 @@ export function updateLocale(name: string, config?: LocaleData): Locale {

// returns locale data
export function getLocale(key?: string | string[]): Locale {
setDefaultLocale();

if (!key) {
return globalLocale;
}
Expand All @@ -211,16 +229,38 @@ export function listLocales(): string[] {
return Object.keys(locales);
}

// define default locale
getSetGlobalLocale('en', {
dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal(num: number): string {
const b = num % 10;
const output =
toInt((num % 100) / 10) === 1
? 'th'
: b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';

return num + output;
function setDefaultLocale(): void {
if (locales[`en`]) {

return undefined;
}
});

getSetGlobalLocale('en', {
dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal(num: number): string {
const b = num % 10;
const output =
toInt((num % 100) / 10) === 1
? 'th'
: b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';

return num + output;
}
});

initWeek();
initWeekYear();
initYear();
initTimezone();
initTimestamp();
initSecond();
initQuarter();
initOffset();
initMonth();
initMinute();
initMillisecond();
initHour();
initDayOfYear();
initDayOfWeek();
initDayOfMonth();
}
17 changes: 9 additions & 8 deletions src/chronos/public_api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@ import './units/index';
export { add, subtract } from './moment/add-subtract';

export {
getDay,
isFirstDayOfWeek,
isSameYear,
isSameDay,
isSameMonth,
getFullYear,
getFirstDayOfMonth,
getMonth
getDay,
isFirstDayOfWeek,
isSameYear,
isSameDay,
isSameMonth,
getFullYear,
getFirstDayOfMonth,
getMonth
} from './utils/date-getters';

export { parseDate } from './create/local';
export { formatDate } from './format';


export {
listLocales,
getLocale,
Expand Down
41 changes: 24 additions & 17 deletions src/chronos/units/day-of-month.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,39 @@ import { addUnitAlias } from './aliases';
import { addUnitPriority } from './priorities';
import { DateParsingConfig } from '../create/parsing.types';


export function initDayOfMonth() {
// FORMATTING

addFormatToken('D', ['DD', 2, false], 'Do',
function (date: Date, opts: DateFormatterOptions): string {
return getDate(date, opts.isUTC).toString(10);
});
addFormatToken('D', ['DD', 2, false], 'Do',
function(date: Date, opts: DateFormatterOptions): string {
return getDate(date, opts.isUTC)
.toString(10);
}
);

// ALIASES

addUnitAlias('date', 'D');
addUnitAlias('date', 'D');

// PRIOROITY
addUnitPriority('date', 9);
addUnitPriority('date', 9);

// PARSING

addRegexToken('D', match1to2);
addRegexToken('DD', match1to2, match2);
addRegexToken('Do', function (isStrict, locale) {
return locale._dayOfMonthOrdinalParse || locale._ordinalParse;
});
addRegexToken('D', match1to2);
addRegexToken('DD', match1to2, match2);
addRegexToken('Do', function(isStrict, locale) {
return locale._dayOfMonthOrdinalParse || locale._ordinalParse;
});

addParseToken(['D', 'DD'], DATE);
addParseToken('Do',
function (input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {
array[DATE] = toInt(input.match(match1to2)[0]);
addParseToken(['D', 'DD'], DATE);
addParseToken(
'Do',
function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {
array[DATE] = toInt(input.match(match1to2)[0]);

return config;
});
return config;
}
);
}
138 changes: 77 additions & 61 deletions src/chronos/units/day-of-week.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,86 +12,102 @@ import { DateParsingConfig } from '../create/parsing.types';
import { add } from '../moment/add-subtract';
import { getLocale } from '../locale/locales';


export function initDayOfWeek() {
// FORMATTING

addFormatToken('d', null, 'do',
function (date: Date, opts: DateFormatterOptions): string {
return getDay(date, opts.isUTC).toString(10);
});
addFormatToken('d', null, 'do',
function(date: Date, opts: DateFormatterOptions): string {
return getDay(date, opts.isUTC)
.toString(10);
}
);

addFormatToken('dd', null, null,
function (date: Date, opts: DateFormatterOptions): string {
return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);
});
addFormatToken('dd', null, null,
function(date: Date, opts: DateFormatterOptions): string {
return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);
}
);

addFormatToken('ddd', null, null,
function (date: Date, opts: DateFormatterOptions): string {
return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);
});
addFormatToken('ddd', null, null,
function(date: Date, opts: DateFormatterOptions): string {
return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);
}
);

addFormatToken('dddd', null, null,
function (date: Date, opts: DateFormatterOptions): string {
return opts.locale.weekdays(date, opts.format, opts.isUTC);
});
addFormatToken('dddd', null, null,
function(date: Date, opts: DateFormatterOptions): string {
return opts.locale.weekdays(date, opts.format, opts.isUTC);
}
);

addFormatToken('e', null, null,
function (date: Date, opts: DateFormatterOptions): string {
return getLocaleDayOfWeek(date, opts.locale, opts.isUTC).toString(10);
// return getDay(date, opts.isUTC).toString(10);
});
addFormatToken('E', null, null,
function (date: Date, opts: DateFormatterOptions): string {
return getISODayOfWeek(date, opts.isUTC).toString(10);
});
addFormatToken('e', null, null,
function(date: Date, opts: DateFormatterOptions): string {
return getLocaleDayOfWeek(date, opts.locale, opts.isUTC)
.toString(10);
// return getDay(date, opts.isUTC).toString(10);
}
);
addFormatToken('E', null, null,
function(date: Date, opts: DateFormatterOptions): string {
return getISODayOfWeek(date, opts.isUTC)
.toString(10);
}
);

// ALIASES

addUnitAlias('day', 'd');
addUnitAlias('weekday', 'e');
addUnitAlias('isoWeekday', 'E');
addUnitAlias('day', 'd');
addUnitAlias('weekday', 'e');
addUnitAlias('isoWeekday', 'E');

// PRIORITY
addUnitPriority('day', 11);
addUnitPriority('weekday', 11);
addUnitPriority('isoWeekday', 11);
addUnitPriority('day', 11);
addUnitPriority('weekday', 11);
addUnitPriority('isoWeekday', 11);

// PARSING

addRegexToken('d', match1to2);
addRegexToken('e', match1to2);
addRegexToken('E', match1to2);

addRegexToken('dd', function (isStrict: boolean, locale: Locale): RegExp {
return locale.weekdaysMinRegex(isStrict);
});

addRegexToken('ddd', function (isStrict: boolean, locale: Locale): RegExp {
return locale.weekdaysShortRegex(isStrict);
});
addRegexToken('dddd', function (isStrict: boolean, locale: Locale): RegExp {
return locale.weekdaysRegex(isStrict);
});

addWeekParseToken(['dd', 'ddd', 'dddd'],
function (input: string, week: WeekParsing, config: DateParsingConfig, token) {
const weekday = config._locale.weekdaysParse(input, token, config._strict);
// if we didn't get a weekday name, mark the date as invalid
if (weekday != null) {
week.d = weekday;
} else {
getParsingFlags(config).invalidWeekday = !!input;
}
addRegexToken('d', match1to2);
addRegexToken('e', match1to2);
addRegexToken('E', match1to2);

return config;
addRegexToken('dd', function(isStrict: boolean, locale: Locale): RegExp {
return locale.weekdaysMinRegex(isStrict);
});

addWeekParseToken(['d', 'e', 'E'],
function (input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {
week[token] = toInt(input);

return config;
addRegexToken('ddd', function(isStrict: boolean, locale: Locale): RegExp {
return locale.weekdaysShortRegex(isStrict);
});
addRegexToken('dddd', function(isStrict: boolean, locale: Locale): RegExp {
return locale.weekdaysRegex(isStrict);
});

addWeekParseToken(
['dd', 'ddd', 'dddd'],
function(input: string, week: WeekParsing, config: DateParsingConfig, token) {
const weekday = config._locale.weekdaysParse(input, token, config._strict);
// if we didn't get a weekday name, mark the date as invalid
if (weekday != null) {
week.d = weekday;
} else {
getParsingFlags(config).invalidWeekday = !!input;
}

return config;
}
);

addWeekParseToken(
['d', 'e', 'E'],
function(input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {
week[token] = toInt(input);

return config;
}
);
}

// HELPERS

export function parseWeekday(input: string | number, locale: Locale): number {
Expand Down
Loading

0 comments on commit f04c936

Please sign in to comment.