fix: Add Portugese, Brazil to language options (#2164)
* Add Portugese, Brazil to language options * Upgrade date-fns package Co-authored-by: Tom Moor <tom.moor@gmail.com>
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import format from "date-fns/format";
|
import { format } from "date-fns";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { NavLink } from "react-router-dom";
|
import { NavLink } from "react-router-dom";
|
||||||
import styled, { withTheme } from "styled-components";
|
import styled, { withTheme } from "styled-components";
|
||||||
@ -37,7 +37,7 @@ class RevisionListItem extends React.Component<Props> {
|
|||||||
</Author>
|
</Author>
|
||||||
<Meta>
|
<Meta>
|
||||||
<Time dateTime={revision.createdAt} tooltipDelay={250}>
|
<Time dateTime={revision.createdAt} tooltipDelay={250}>
|
||||||
{format(revision.createdAt, "MMMM Do, YYYY h:mm a")}
|
{format(Date.parse(revision.createdAt), "MMMM do, yyyy h:mm a")}
|
||||||
</Time>
|
</Time>
|
||||||
</Meta>
|
</Meta>
|
||||||
{showMenu && (
|
{showMenu && (
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import distanceInWordsToNow from "date-fns/distance_in_words_to_now";
|
import { formatDistanceToNow } from "date-fns";
|
||||||
import { sortBy } from "lodash";
|
import { sortBy } from "lodash";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
@ -55,7 +55,7 @@ function DocumentViews({ document, isOpen }: Props) {
|
|||||||
? t("Currently editing")
|
? t("Currently editing")
|
||||||
: t("Currently viewing")
|
: t("Currently viewing")
|
||||||
: t("Viewed {{ timeAgo }} ago", {
|
: t("Viewed {{ timeAgo }} ago", {
|
||||||
timeAgo: distanceInWordsToNow(
|
timeAgo: formatDistanceToNow(
|
||||||
view ? new Date(view.lastViewedAt) : new Date()
|
view ? new Date(view.lastViewedAt) : new Date()
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import distanceInWordsToNow from "date-fns/distance_in_words_to_now";
|
import { format, formatDistanceToNow } from "date-fns";
|
||||||
import format from "date-fns/format";
|
import { enUS, de, fr, es, it, ko, ptBR, pt, zhCN, ru } from "date-fns/locale";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import Tooltip from "components/Tooltip";
|
import Tooltip from "components/Tooltip";
|
||||||
import useUserLocale from "hooks/useUserLocale";
|
import useUserLocale from "hooks/useUserLocale";
|
||||||
|
|
||||||
const locales = {
|
const locales = {
|
||||||
en: require(`date-fns/locale/en`),
|
en_US: enUS,
|
||||||
de: require(`date-fns/locale/de`),
|
de_DE: de,
|
||||||
es: require(`date-fns/locale/es`),
|
es_ES: es,
|
||||||
fr: require(`date-fns/locale/fr`),
|
fr_FR: fr,
|
||||||
it: require(`date-fns/locale/it`),
|
it_IT: it,
|
||||||
ko: require(`date-fns/locale/ko`),
|
ko_KR: ko,
|
||||||
pt: require(`date-fns/locale/pt`),
|
pt_BR: ptBR,
|
||||||
zh: require(`date-fns/locale/zh_cn`),
|
pt_PT: pt,
|
||||||
ru: require(`date-fns/locale/ru`),
|
zh_CN: zhCN,
|
||||||
|
ru_RU: ru,
|
||||||
};
|
};
|
||||||
|
|
||||||
let callbacks = [];
|
let callbacks = [];
|
||||||
@ -64,7 +65,7 @@ function LocaleTime({
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
let content = distanceInWordsToNow(dateTime, {
|
let content = formatDistanceToNow(Date.parse(dateTime), {
|
||||||
addSuffix,
|
addSuffix,
|
||||||
locale: userLocale ? locales[userLocale] : undefined,
|
locale: userLocale ? locales[userLocale] : undefined,
|
||||||
});
|
});
|
||||||
@ -78,7 +79,7 @@ function LocaleTime({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
tooltip={format(dateTime, "MMMM Do, YYYY h:mm a")}
|
tooltip={format(Date.parse(dateTime), "MMMM do, yyyy h:mm a")}
|
||||||
delay={tooltipDelay}
|
delay={tooltipDelay}
|
||||||
placement="bottom"
|
placement="bottom"
|
||||||
>
|
>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import distanceInWordsToNow from "date-fns/distance_in_words_to_now";
|
import { formatDistanceToNow } from "date-fns";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
|
|
||||||
const LocaleTime = React.lazy(() =>
|
const LocaleTime = React.lazy(() =>
|
||||||
@ -15,7 +15,7 @@ type Props = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function Time(props: Props) {
|
function Time(props: Props) {
|
||||||
let content = distanceInWordsToNow(props.dateTime, {
|
let content = formatDistanceToNow(Date.parse(props.dateTime), {
|
||||||
addSuffix: props.addSuffix,
|
addSuffix: props.addSuffix,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -8,5 +8,5 @@ export default function useUserLocale() {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
return auth.user.language.split("_")[0];
|
return auth.user.language;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import addDays from "date-fns/add_days";
|
import { addDays, differenceInDays } from "date-fns";
|
||||||
import differenceInDays from "date-fns/difference_in_days";
|
|
||||||
import invariant from "invariant";
|
import invariant from "invariant";
|
||||||
import { action, computed, observable, set } from "mobx";
|
import { action, computed, observable, set } from "mobx";
|
||||||
import parseTitle from "shared/utils/parseTitle";
|
import parseTitle from "shared/utils/parseTitle";
|
||||||
|
@ -3,7 +3,6 @@ import * as React from "react";
|
|||||||
import { Switch, Redirect, type Match } from "react-router-dom";
|
import { Switch, Redirect, type Match } from "react-router-dom";
|
||||||
import Archive from "scenes/Archive";
|
import Archive from "scenes/Archive";
|
||||||
import Collection from "scenes/Collection";
|
import Collection from "scenes/Collection";
|
||||||
import KeyedDocument from "scenes/Document/KeyedDocument";
|
|
||||||
import DocumentNew from "scenes/DocumentNew";
|
import DocumentNew from "scenes/DocumentNew";
|
||||||
import Drafts from "scenes/Drafts";
|
import Drafts from "scenes/Drafts";
|
||||||
import Error404 from "scenes/Error404";
|
import Error404 from "scenes/Error404";
|
||||||
@ -23,7 +22,11 @@ import { matchDocumentSlug as slug } from "utils/routeHelpers";
|
|||||||
const SettingsRoutes = React.lazy(() =>
|
const SettingsRoutes = React.lazy(() =>
|
||||||
import(/* webpackChunkName: "settings" */ "./settings")
|
import(/* webpackChunkName: "settings" */ "./settings")
|
||||||
);
|
);
|
||||||
|
const KeyedDocument = React.lazy(() =>
|
||||||
|
import(
|
||||||
|
/* webpackChunkName: "keyed-document" */ "scenes/Document/KeyedDocument"
|
||||||
|
)
|
||||||
|
);
|
||||||
const NotFound = () => <Search notFound />;
|
const NotFound = () => <Search notFound />;
|
||||||
const RedirectDocument = ({ match }: { match: Match }) => (
|
const RedirectDocument = ({ match }: { match: Match }) => (
|
||||||
<Redirect
|
<Redirect
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import distanceInWordsToNow from "date-fns/distance_in_words_to_now";
|
import { formatDistanceToNow } from "date-fns";
|
||||||
import invariant from "invariant";
|
import invariant from "invariant";
|
||||||
import { deburr, sortBy } from "lodash";
|
import { deburr, sortBy } from "lodash";
|
||||||
import { observable } from "mobx";
|
import { observable } from "mobx";
|
||||||
@ -94,8 +94,11 @@ class DataLoader extends React.Component<Props> {
|
|||||||
// search for exact internal document
|
// search for exact internal document
|
||||||
const slug = parseDocumentSlug(term);
|
const slug = parseDocumentSlug(term);
|
||||||
try {
|
try {
|
||||||
const { document } = await this.props.documents.fetch(slug);
|
const {
|
||||||
const time = distanceInWordsToNow(document.updatedAt, {
|
document,
|
||||||
|
}: { document: Document } = await this.props.documents.fetch(slug);
|
||||||
|
|
||||||
|
const time = formatDistanceToNow(Date.parse(document.updatedAt), {
|
||||||
addSuffix: true,
|
addSuffix: true,
|
||||||
});
|
});
|
||||||
return [
|
return [
|
||||||
@ -118,7 +121,7 @@ class DataLoader extends React.Component<Props> {
|
|||||||
|
|
||||||
return sortBy(
|
return sortBy(
|
||||||
results.map((document) => {
|
results.map((document) => {
|
||||||
const time = distanceInWordsToNow(document.updatedAt, {
|
const time = formatDistanceToNow(document.updatedAt, {
|
||||||
addSuffix: true,
|
addSuffix: true,
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import distanceInWordsToNow from "date-fns/distance_in_words_to_now";
|
import { formatDistanceToNow } from "date-fns";
|
||||||
import invariant from "invariant";
|
import invariant from "invariant";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import { GlobeIcon, PadlockIcon } from "outline-icons";
|
import { GlobeIcon, PadlockIcon } from "outline-icons";
|
||||||
@ -118,9 +118,12 @@ function SharePopover({ document, share, sharedParent, onSubmit }: Props) {
|
|||||||
<>
|
<>
|
||||||
.{" "}
|
.{" "}
|
||||||
{t("The shared link was last accessed {{ timeAgo }}.", {
|
{t("The shared link was last accessed {{ timeAgo }}.", {
|
||||||
timeAgo: distanceInWordsToNow(share.lastAccessedAt, {
|
timeAgo: formatDistanceToNow(
|
||||||
addSuffix: true,
|
Date.parse(share.lastAccessedAt),
|
||||||
}),
|
{
|
||||||
|
addSuffix: true,
|
||||||
|
}
|
||||||
|
),
|
||||||
})}
|
})}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import distanceInWordsToNow from "date-fns/distance_in_words_to_now";
|
import { formatDistanceToNow } from "date-fns";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import { EditIcon } from "outline-icons";
|
import { EditIcon } from "outline-icons";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
@ -52,7 +52,7 @@ function UserProfile(props: Props) {
|
|||||||
? t("Joined")
|
? t("Joined")
|
||||||
: t("Invited")}{" "}
|
: t("Invited")}{" "}
|
||||||
{t("{{ time }} ago.", {
|
{t("{{ time }} ago.", {
|
||||||
time: distanceInWordsToNow(new Date(user.createdAt)),
|
time: formatDistanceToNow(new Date(user.createdAt)),
|
||||||
})}
|
})}
|
||||||
{user.isAdmin && (
|
{user.isAdmin && (
|
||||||
<StyledBadge primary={user.isAdmin}>{t("Admin")}</StyledBadge>
|
<StyledBadge primary={user.isAdmin}>{t("Admin")}</StyledBadge>
|
||||||
|
@ -92,7 +92,7 @@
|
|||||||
"compressorjs": "^1.0.7",
|
"compressorjs": "^1.0.7",
|
||||||
"copy-to-clipboard": "^3.0.6",
|
"copy-to-clipboard": "^3.0.6",
|
||||||
"core-js": "^3.10.2",
|
"core-js": "^3.10.2",
|
||||||
"date-fns": "1.29.0",
|
"date-fns": "2.22.1",
|
||||||
"dd-trace": "^0.32.2",
|
"dd-trace": "^0.32.2",
|
||||||
"debug": "^4.1.1",
|
"debug": "^4.1.1",
|
||||||
"dotenv": "^4.0.0",
|
"dotenv": "^4.0.0",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import format from "date-fns/format";
|
import { format } from "date-fns";
|
||||||
import Router from "koa-router";
|
import Router from "koa-router";
|
||||||
import { v4 as uuidv4 } from "uuid";
|
import { v4 as uuidv4 } from "uuid";
|
||||||
import { NotFoundError } from "../errors";
|
import { NotFoundError } from "../errors";
|
||||||
@ -39,7 +39,7 @@ router.post("attachments.create", auth(), async (ctx) => {
|
|||||||
const bucket = acl === "public-read" ? "public" : "uploads";
|
const bucket = acl === "public-read" ? "public" : "uploads";
|
||||||
const key = `${bucket}/${user.id}/${s3Key}/${name}`;
|
const key = `${bucket}/${user.id}/${s3Key}/${name}`;
|
||||||
const credential = makeCredential();
|
const credential = makeCredential();
|
||||||
const longDate = format(new Date(), "YYYYMMDDTHHmmss\\Z");
|
const longDate = format(new Date(), "yyyyMMdd'T'HHmmss'Z'");
|
||||||
const policy = makePolicy(credential, longDate, acl, contentType);
|
const policy = makePolicy(credential, longDate, acl, contentType);
|
||||||
const endpoint = publicS3Endpoint();
|
const endpoint = publicS3Endpoint();
|
||||||
const url = `${endpoint}/${key}`;
|
const url = `${endpoint}/${key}`;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import subDays from "date-fns/sub_days";
|
import { subDays } from "date-fns";
|
||||||
import debug from "debug";
|
import debug from "debug";
|
||||||
import Router from "koa-router";
|
import Router from "koa-router";
|
||||||
import { AuthenticationError } from "../errors";
|
import { AuthenticationError } from "../errors";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* eslint-disable flowtype/require-valid-file-annotation */
|
/* eslint-disable flowtype/require-valid-file-annotation */
|
||||||
import subDays from "date-fns/sub_days";
|
import { subDays } from "date-fns";
|
||||||
import TestServer from "fetch-test-server";
|
import TestServer from "fetch-test-server";
|
||||||
import app from "../app";
|
import app from "../app";
|
||||||
import { Attachment, Document } from "../models";
|
import { Attachment, Document } from "../models";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import passport from "@outlinewiki/koa-passport";
|
import passport from "@outlinewiki/koa-passport";
|
||||||
import addMonths from "date-fns/add_months";
|
import { addMonths } from "date-fns";
|
||||||
import debug from "debug";
|
import debug from "debug";
|
||||||
import Koa from "koa";
|
import Koa from "koa";
|
||||||
import bodyParser from "koa-body";
|
import bodyParser from "koa-body";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import subMinutes from "date-fns/sub_minutes";
|
import { subMinutes } from "date-fns";
|
||||||
import Router from "koa-router";
|
import Router from "koa-router";
|
||||||
import { find } from "lodash";
|
import { find } from "lodash";
|
||||||
import { AuthorizationError } from "../../errors";
|
import { AuthorizationError } from "../../errors";
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
import addMinutes from "date-fns/add_minutes";
|
import { addMinutes, subMinutes } from "date-fns";
|
||||||
import subMinutes from "date-fns/sub_minutes";
|
|
||||||
import JWT from "jsonwebtoken";
|
import JWT from "jsonwebtoken";
|
||||||
import { v4 as uuidv4 } from "uuid";
|
import { v4 as uuidv4 } from "uuid";
|
||||||
import { languages } from "../../shared/i18n";
|
import { languages } from "../../shared/i18n";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import subMilliseconds from "date-fns/sub_milliseconds";
|
import { subMilliseconds } from "date-fns";
|
||||||
import { USER_PRESENCE_INTERVAL } from "../../shared/constants";
|
import { USER_PRESENCE_INTERVAL } from "../../shared/constants";
|
||||||
import { User } from "../models";
|
import { User } from "../models";
|
||||||
import { DataTypes, Op, sequelize } from "../sequelize";
|
import { DataTypes, Op, sequelize } from "../sequelize";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import subHours from "date-fns/sub_hours";
|
import { subHours } from "date-fns";
|
||||||
import type { Event } from "../events";
|
import type { Event } from "../events";
|
||||||
import { socketio } from "../main";
|
import { socketio } from "../main";
|
||||||
import {
|
import {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import querystring from "querystring";
|
import querystring from "querystring";
|
||||||
import * as Sentry from "@sentry/node";
|
import * as Sentry from "@sentry/node";
|
||||||
import addMonths from "date-fns/add_months";
|
import { addMonths } from "date-fns";
|
||||||
import { type Context } from "koa";
|
import { type Context } from "koa";
|
||||||
import { pick } from "lodash";
|
import { pick } from "lodash";
|
||||||
import { User, Event, Team } from "../models";
|
import { User, Event, Team } from "../models";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import subMinutes from "date-fns/sub_minutes";
|
import { subMinutes } from "date-fns";
|
||||||
import JWT from "jsonwebtoken";
|
import JWT from "jsonwebtoken";
|
||||||
import { AuthenticationError } from "../errors";
|
import { AuthenticationError } from "../errors";
|
||||||
import { Team, User } from "../models";
|
import { Team, User } from "../models";
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import addMinutes from "date-fns/add_minutes";
|
import { addMinutes, subMinutes } from "date-fns";
|
||||||
import subMinutes from "date-fns/sub_minutes";
|
|
||||||
import { type Request } from "koa";
|
import { type Request } from "koa";
|
||||||
import { OAuthStateMismatchError } from "../errors";
|
import { OAuthStateMismatchError } from "../errors";
|
||||||
import { getCookieDomain } from "./domains";
|
import { getCookieDomain } from "./domains";
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
import * as Sentry from "@sentry/node";
|
import * as Sentry from "@sentry/node";
|
||||||
import AWS from "aws-sdk";
|
import AWS from "aws-sdk";
|
||||||
import addHours from "date-fns/add_hours";
|
import { addHours, format } from "date-fns";
|
||||||
import format from "date-fns/format";
|
|
||||||
import fetch from "fetch-with-proxy";
|
import fetch from "fetch-with-proxy";
|
||||||
|
|
||||||
const AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY;
|
const AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY;
|
||||||
@ -36,7 +35,7 @@ export const makeCredential = () => {
|
|||||||
const credential =
|
const credential =
|
||||||
AWS_ACCESS_KEY_ID +
|
AWS_ACCESS_KEY_ID +
|
||||||
"/" +
|
"/" +
|
||||||
format(new Date(), "YYYYMMDD") +
|
format(new Date(), "yyyyMMdd") +
|
||||||
"/" +
|
"/" +
|
||||||
AWS_REGION +
|
AWS_REGION +
|
||||||
"/s3/aws4_request";
|
"/s3/aws4_request";
|
||||||
@ -62,7 +61,7 @@ export const makePolicy = (
|
|||||||
{ "x-amz-credential": credential },
|
{ "x-amz-credential": credential },
|
||||||
{ "x-amz-date": longDate },
|
{ "x-amz-date": longDate },
|
||||||
],
|
],
|
||||||
expiration: format(tomorrow, "YYYY-MM-DDTHH:mm:ss\\Z"),
|
expiration: format(tomorrow, "yyyy-MM-dd'T'HH:mm:ss'Z'"),
|
||||||
};
|
};
|
||||||
|
|
||||||
return Buffer.from(JSON.stringify(policy)).toString("base64");
|
return Buffer.from(JSON.stringify(policy)).toString("base64");
|
||||||
@ -71,7 +70,7 @@ export const makePolicy = (
|
|||||||
export const getSignature = (policy: any) => {
|
export const getSignature = (policy: any) => {
|
||||||
const kDate = hmac(
|
const kDate = hmac(
|
||||||
"AWS4" + AWS_SECRET_ACCESS_KEY,
|
"AWS4" + AWS_SECRET_ACCESS_KEY,
|
||||||
format(new Date(), "YYYYMMDD")
|
format(new Date(), "yyyyMMdd")
|
||||||
);
|
);
|
||||||
const kRegion = hmac(kDate, AWS_REGION);
|
const kRegion = hmac(kDate, AWS_REGION);
|
||||||
const kService = hmac(kRegion, "s3");
|
const kService = hmac(kRegion, "s3");
|
||||||
|
@ -13,6 +13,7 @@ export const languageOptions = [
|
|||||||
{ label: "Français (France)", value: "fr_FR" },
|
{ label: "Français (France)", value: "fr_FR" },
|
||||||
{ label: "Italiano (Italia)", value: "it_IT" },
|
{ label: "Italiano (Italia)", value: "it_IT" },
|
||||||
{ label: "한국어 (Korean)", value: "ko_KR" },
|
{ label: "한국어 (Korean)", value: "ko_KR" },
|
||||||
|
{ label: "Português (Brazil)", value: "pt_BR" },
|
||||||
{ label: "Português (Portugal)", value: "pt_PT" },
|
{ label: "Português (Portugal)", value: "pt_PT" },
|
||||||
{ label: "Pусский (Россия)", value: "ru_RU" },
|
{ label: "Pусский (Россия)", value: "ru_RU" },
|
||||||
];
|
];
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import subDays from "date-fns/sub_days";
|
import { subDays, subMonths, subWeeks, subYears } from "date-fns";
|
||||||
import subMonth from "date-fns/sub_months";
|
|
||||||
import subWeek from "date-fns/sub_weeks";
|
|
||||||
import subYear from "date-fns/sub_years";
|
|
||||||
|
|
||||||
export function subtractDate(
|
export function subtractDate(
|
||||||
date: Date,
|
date: Date,
|
||||||
@ -12,11 +9,11 @@ export function subtractDate(
|
|||||||
case "day":
|
case "day":
|
||||||
return subDays(date, 1);
|
return subDays(date, 1);
|
||||||
case "week":
|
case "week":
|
||||||
return subWeek(date, 1);
|
return subWeeks(date, 1);
|
||||||
case "month":
|
case "month":
|
||||||
return subMonth(date, 1);
|
return subMonths(date, 1);
|
||||||
case "year":
|
case "year":
|
||||||
return subYear(date, 1);
|
return subYears(date, 1);
|
||||||
default:
|
default:
|
||||||
return date;
|
return date;
|
||||||
}
|
}
|
||||||
|
@ -99,13 +99,24 @@ module.exports = {
|
|||||||
moduleIds: 'hashed',
|
moduleIds: 'hashed',
|
||||||
chunkIds: 'named',
|
chunkIds: 'named',
|
||||||
splitChunks: {
|
splitChunks: {
|
||||||
|
chunks: 'async',
|
||||||
|
minSize: 20000,
|
||||||
|
minChunks: 1,
|
||||||
|
maxAsyncRequests: 30,
|
||||||
|
maxInitialRequests: 30,
|
||||||
|
enforceSizeThreshold: 50000,
|
||||||
cacheGroups: {
|
cacheGroups: {
|
||||||
vendor: {
|
defaultVendors: {
|
||||||
test: /[\\/]node_modules[\\/]/,
|
test: /[\\/]node_modules[\\/]/,
|
||||||
name: 'vendors',
|
priority: -10,
|
||||||
chunks: 'initial',
|
reuseExistingChunk: true,
|
||||||
},
|
},
|
||||||
},
|
default: {
|
||||||
},
|
minChunks: 2,
|
||||||
|
priority: -20,
|
||||||
|
reuseExistingChunk: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -4381,10 +4381,10 @@ data-urls@^2.0.0:
|
|||||||
whatwg-mimetype "^2.3.0"
|
whatwg-mimetype "^2.3.0"
|
||||||
whatwg-url "^8.0.0"
|
whatwg-url "^8.0.0"
|
||||||
|
|
||||||
date-fns@1.29.0:
|
date-fns@2.22.1:
|
||||||
version "1.29.0"
|
version "2.22.1"
|
||||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
|
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.22.1.tgz#1e5af959831ebb1d82992bf67b765052d8f0efc4"
|
||||||
integrity sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==
|
integrity sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==
|
||||||
|
|
||||||
dd-trace@^0.32.2:
|
dd-trace@^0.32.2:
|
||||||
version "0.32.2"
|
version "0.32.2"
|
||||||
|
Reference in New Issue
Block a user