Compare commits
No commits in common. "master" and "9429bfa374cac4063b6e3c506f52f614e27e6205" have entirely different histories.
master
...
9429bfa374
|
@ -1,5 +1,5 @@
|
|||
node_modules
|
||||
lib
|
||||
package-lock.json
|
||||
|
||||
dist/*
|
||||
!dist/.keep
|
||||
!dist.keep
|
|
@ -1,2 +0,0 @@
|
|||
src
|
||||
tsconfig.json
|
91
README.md
91
README.md
|
@ -1,90 +1 @@
|
|||
![Tyme.JS](./logo.png)
|
||||
|
||||
[Site](https://justkato.me/) |
|
||||
[Docs/Wiki](https://github.com/JustKato/Tyme.js/wiki) |
|
||||
[Contributing](CONTRIBUTING.md) |
|
||||
|
||||
Building the project yourself:
|
||||
```shell
|
||||
$ git pull https://github.com/JustKato/Tyme.js tymejs
|
||||
$ cd tymejs
|
||||
$ npm run build
|
||||
```
|
||||
|
||||
## Download
|
||||
|
||||
[![Web Download](https://img.shields.io/badge/Web-Download%20Package-yellow?style=for-the-badge&logo=javascript)](https://github.com/JustKato/Tyme.js/releases/download/3.0.0/tyme.js-3.0.0.zip.zip)
|
||||
[![NPM Download](https://img.shields.io/badge/NPM-Download-orange?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/tymejs)
|
||||
|
||||
|
||||
Tyme.js is released under the [MIT license](license) & supports modern environments.<br>
|
||||
|
||||
## Installation
|
||||
|
||||
In a browser:
|
||||
```html
|
||||
<script src="tyme.js"></script>
|
||||
```
|
||||
|
||||
Using npm:
|
||||
```shell
|
||||
$ npm i tymejs
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
All of the available formats are directly from [PHP's date formats](https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters)
|
||||
|
||||
|
||||
#### ⚠ Warning ⚠
|
||||
⚠ Not all different character formats have been implemented. ⚠
|
||||
|
||||
|
||||
In Node.js TypeScript:
|
||||
```js
|
||||
// Import the Package
|
||||
import TymeJS from "tymejs"; // Use require for plain javascript
|
||||
|
||||
// Get the date object from Somewhere
|
||||
let myDate: Date = new Date();
|
||||
|
||||
// Initialize the TymeJS Object
|
||||
let t: TymeJS = new TymeJS(myDate);
|
||||
|
||||
// Now you can format different dates
|
||||
let formattedDate: string = t.format("d/m/Y H:i A");
|
||||
|
||||
// All Available formats: https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters
|
||||
|
||||
// Log the formatted Date
|
||||
console.log(formattedDate);
|
||||
```
|
||||
|
||||
In Node.js using JavaScript:
|
||||
```js
|
||||
const { default: TymeJS } = require("tymejs");
|
||||
|
||||
// Get the date object from Somewhere
|
||||
let myDate = new Date();
|
||||
|
||||
// Initialize the TymeJS Object
|
||||
let t = new TymeJS(myDate);
|
||||
|
||||
// Now you can format different dates
|
||||
let formattedDate = t.format("d/m/Y H:i A");
|
||||
|
||||
// All Available formats: https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters
|
||||
|
||||
// Log the formatted Date
|
||||
console.log(formattedDate);
|
||||
```
|
||||
|
||||
## Why TymeJS?
|
||||
|
||||
TymeJS makes working with JavaScript date objects much easier, I've found myself<br>
|
||||
multiple times in the situation where the client doesn't like their region's date format
|
||||
and requests for custom formats, this consumed a lot of time implementing, so that's why
|
||||
I have created this library, for:
|
||||
* Reliable Date formats
|
||||
* Reliable Time formats
|
||||
* TypeScript Support
|
||||
# Tyme.js
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"transform": {
|
||||
"^.+\\.(t|j)sx?$": "ts-jest"
|
||||
},
|
||||
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
|
||||
"moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"]
|
||||
}
|
21
license
21
license
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) [2022] [Kato Twofold]
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
File diff suppressed because it is too large
Load Diff
30
package.json
30
package.json
|
@ -1,36 +1,18 @@
|
|||
{
|
||||
"name": "tymejs",
|
||||
"version": "0.4.5",
|
||||
"version": "0.1.0",
|
||||
"description": "Quickly and easily format JavaScript date Objects",
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
"main": "dist/index.js",
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"buildweb": "esbuild src/index.ts --bundle --minify --sourcemap --target=chrome58,firefox57,safari11,edge16 --outfile=dist/tyme.js",
|
||||
"test": "jest --config jestconfig.json"
|
||||
"build": "esbuild src/index.ts --bundle --minify --sourcemap --target=chrome58,firefox57,safari11,edge16 --outfile=dist/tyme.js",
|
||||
"test": "tsc"
|
||||
},
|
||||
"keywords": [
|
||||
"time",
|
||||
"time format",
|
||||
"date",
|
||||
"date format",
|
||||
"datetime",
|
||||
"datetime format",
|
||||
"date",
|
||||
"format"
|
||||
],
|
||||
"author": "Kato Twofold",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"url": "https://github.com/JustKato/Tyme.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^27.5.0",
|
||||
"jest": "^28.1.0",
|
||||
"ts-jest": "^28.0.1",
|
||||
"typescript": "^4.6.4",
|
||||
"ts-node": "^10.7.0"
|
||||
},
|
||||
"files": [
|
||||
"lib/**/*"
|
||||
]
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* A dictionary for all of the days of the week
|
||||
*/
|
||||
const dayDictionary: Array<string> = [
|
||||
"Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday",
|
||||
];
|
||||
|
||||
|
||||
export {
|
||||
dayDictionary
|
||||
};
|
|
@ -1,67 +1 @@
|
|||
// All mappings according to: https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters
|
||||
|
||||
// ############################## [ Common Formats ] ##############################
|
||||
|
||||
export type commonDateFormats = "d/m/Y" | "m/d/Y" | "d/m/Y h:i A" | "d/m/Y H:i" | "m/d/Y h:i A" | "m/d/Y H:i";
|
||||
|
||||
// ############################## [ Time Formats ] ##############################
|
||||
|
||||
// =-=-=-=-=-=-=-=-=-=-= [ Meridiem ] =-=-=-=-=-=-=-=-=-=-=
|
||||
const mertypes = [ "a", "A" ];
|
||||
/**
|
||||
* Possible formats for the date
|
||||
*/
|
||||
export type meridiemType = "a" | "A";
|
||||
export const isMeridiemType = (x: any): x is meridiemType => mertypes.includes(x);
|
||||
|
||||
// =-=-=-=-=-=-=-=-=-=-= [ Hours ] =-=-=-=-=-=-=-=-=-=-=
|
||||
const hourtypes = [ "g", "G", "h", "H" ];
|
||||
/**
|
||||
* Possible formats for the date
|
||||
*/
|
||||
export type hourType = "g" | "G" | "h" | "H";
|
||||
export const isHourType = (x: any): x is hourType => hourtypes.includes(x);
|
||||
|
||||
// =-=-=-=-=-=-=-=-=-=-= [ Minutes ] =-=-=-=-=-=-=-=-=-=-=
|
||||
const minutetypes = [ "i" ];
|
||||
/**
|
||||
* Possible formats for the date
|
||||
*/
|
||||
export type minuteType = "i";
|
||||
export const isMinuteType = (x: any): x is minuteType => minutetypes.includes(x);
|
||||
|
||||
// =-=-=-=-=-=-=-=-=-=-= [ Seconds ] =-=-=-=-=-=-=-=-=-=-=
|
||||
const secondtypes = [ "s" ];
|
||||
/**
|
||||
* Possible formats for the date
|
||||
*/
|
||||
export type secondType = "s";
|
||||
export const isSecondType = (x: any): x is secondType => secondtypes.includes(x);
|
||||
|
||||
|
||||
|
||||
// ############################## [ Date Formats ] ##############################
|
||||
|
||||
// =-=-=-=-=-=-=-=-=-=-= [ Date ] =-=-=-=-=-=-=-=-=-=-=
|
||||
const dtypes = [ "j", "d", "D", "l", "w" ];
|
||||
/**
|
||||
* Possible formats for the date
|
||||
*/
|
||||
export type dateType = "j" | "d" | "D" | "l" | "w";
|
||||
export const isDateType = (x: any): x is dateType => dtypes.includes(x);
|
||||
|
||||
// =-=-=-=-=-=-=-=-=-=-= [ Month ] =-=-=-=-=-=-=-=-=-=-=
|
||||
const mtypes = [ "n", "m", "M", "F" ];
|
||||
/**
|
||||
* Possible formats for the month
|
||||
*/
|
||||
export type monthType = "n" | "m" | "M" | "F";
|
||||
export const isMonthType = (x: any): x is monthType => mtypes.includes(x);
|
||||
|
||||
// =-=-=-=-=-=-=-=-=-=-= [ Year ] =-=-=-=-=-=-=-=-=-=-=
|
||||
const yeartypes = [ "L", "o", "y", "Y" ];
|
||||
/**
|
||||
* Possible formats for the year
|
||||
*/
|
||||
export type yearType = "L" | "o" | "y" | "Y";
|
||||
export const isYearType = (x: any): x is yearType => yeartypes.includes(x);
|
||||
export type monthType = "single" | "double" | "short" | "full"
|
|
@ -1,14 +0,0 @@
|
|||
import TymeJS from "../index";
|
||||
|
||||
test(`Formatting Test`, () => {
|
||||
let ts = new Date();
|
||||
|
||||
ts.setFullYear(1998);
|
||||
ts.setMonth(9);
|
||||
ts.setDate(24);
|
||||
|
||||
let ty = new TymeJS(ts);
|
||||
|
||||
expect(ty.format("d/m/Y")).toBe("24/10/1998")
|
||||
|
||||
})
|
172
src/index.ts
172
src/index.ts
|
@ -1,14 +1,12 @@
|
|||
import { dayDictionary } from "./Dictionaries/dateDictionary";
|
||||
import { monthDictionary } from "./Dictionaries/monthDictionary";
|
||||
import { commonDateFormats, dateType, hourType, isDateType, isHourType, isMeridiemType, isMinuteType, isMonthType, isSecondType, isYearType, meridiemType, minuteType, monthType, secondType, yearType } from "./Types/formatTypes";
|
||||
import { monthDictionary } from "./Dictionaries/monthDictionary";
|
||||
import { monthType } from "./Types/formatTypes";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The main Tyme Class, initialize it by optionally passing a date object
|
||||
* Created by Kato Twofold https://justkato.me
|
||||
* @author Kato Twofold
|
||||
* @example new TymeJS().format("d/m/Y h:i A")
|
||||
* @class
|
||||
*/
|
||||
export default class TymeJS {
|
||||
|
||||
|
@ -32,184 +30,42 @@ export default class TymeJS {
|
|||
* Get the currently assigned date object
|
||||
* @returns The assigned Date object
|
||||
*/
|
||||
public getDateObject(): Date {
|
||||
public getDate(): Date {
|
||||
return this.ts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns a string representation of a date. The format of the string depends on the locale.
|
||||
*/
|
||||
public toString(): string {
|
||||
// Return the current date as a string
|
||||
return this.getDateObject().toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the current timestamp to a workable format
|
||||
* @param dateTimeFormat
|
||||
* @returns The date formatted in the provided dateTimeFormat
|
||||
*/
|
||||
public format(dateTimeFormat: commonDateFormats | string ): string {
|
||||
public format(dateTimeFormat: string): string {
|
||||
/**
|
||||
* The formatted date
|
||||
*/
|
||||
let formattedDate = ``;
|
||||
|
||||
// Go through all of the characters of the dateTimeFormat string
|
||||
for ( let char of Array.from(dateTimeFormat) ) {
|
||||
// Check which one of the formatters can handle this
|
||||
if ( isDateType(char) )
|
||||
formattedDate += this.getDate(char);
|
||||
else if ( isMonthType(char) )
|
||||
formattedDate += this.getMonth(char);
|
||||
else if ( isYearType(char) )
|
||||
formattedDate += this.getYear(char);
|
||||
else if ( isMeridiemType(char) )
|
||||
formattedDate += this.getMeridiem(char);
|
||||
else if ( isHourType(char) )
|
||||
formattedDate += this.getHour(char);
|
||||
else if ( isMinuteType(char) )
|
||||
formattedDate += this.getMinutes(char);
|
||||
else if ( isSecondType(char) )
|
||||
formattedDate += this.getSeconds(char);
|
||||
else {
|
||||
// Just append the char to the result
|
||||
formattedDate += char;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Return the formatted date
|
||||
return formattedDate;
|
||||
}
|
||||
|
||||
|
||||
// ############################## [ Time Formats ] ##############################
|
||||
|
||||
public getMeridiem(t: meridiemType): string {
|
||||
// Get the current meridiem
|
||||
let meridiem = ((this.ts.getHours() + 11) % 12 + 1) > 12 ? "pm" : "am";
|
||||
// Check which format to return
|
||||
if ( t === "A" ) {
|
||||
return meridiem.toUpperCase();
|
||||
} else if ( t === "a" ) {
|
||||
return meridiem;
|
||||
}
|
||||
|
||||
throw new Error(`Invalid format for meridiem ${t}`);
|
||||
}
|
||||
|
||||
public getHour(t: hourType): string | number {
|
||||
// Get current hour
|
||||
let h = this.ts.getHours();
|
||||
|
||||
if ( t == "G" ) {
|
||||
return h;
|
||||
} else if ( t === "g" ) {
|
||||
if ( h > 12 )
|
||||
return h - 12;
|
||||
return h;
|
||||
} else if ( t === "H" ) {
|
||||
return String(h).padStart(2, "0");
|
||||
} else if ( t === "h" ) {
|
||||
if ( h > 12 )
|
||||
return String(h - 12).padStart(2, "0");
|
||||
return String(h).padStart(2, "0");
|
||||
}
|
||||
|
||||
throw new Error(`Invalid format for Hours ${t}`);
|
||||
}
|
||||
|
||||
public getMinutes(t: minuteType ): string {
|
||||
|
||||
if ( t === "i" ) {
|
||||
return String(this.ts.getMinutes()).padStart(2, "0");
|
||||
}
|
||||
|
||||
throw new Error(`Invalid format for Minutes ${t}`);
|
||||
}
|
||||
|
||||
public getSeconds(t: secondType) {
|
||||
if ( t === "s" ) {
|
||||
return String(this.ts.getSeconds()).padStart(2, "0");
|
||||
}
|
||||
|
||||
throw new Error(`Invalid format for Seconds ${t}`);
|
||||
}
|
||||
|
||||
|
||||
// ############################## [ Date Formats ] ##############################
|
||||
|
||||
/**
|
||||
*
|
||||
* @param t The format to get the date in
|
||||
* @returns A string of the formatted date
|
||||
* Get the current month
|
||||
*/
|
||||
public getDate(t: dateType): string | number {
|
||||
public getMonth(mType: monthType): string {
|
||||
|
||||
if ( t == "j" ) {
|
||||
// get the index of the current day
|
||||
let currentDate: number = this.ts.getDate();
|
||||
return currentDate;
|
||||
} else if ( t == "d" ) {
|
||||
// get the index of the current day
|
||||
let currentDate: number = this.ts.getDate();
|
||||
return String(currentDate).padStart(2, "0");
|
||||
} else if ( t == 'w' ) {
|
||||
return String(this.ts.getDay());
|
||||
} else if ( t == "l") {
|
||||
return String(dayDictionary[this.ts.getDay()]);
|
||||
} else if ( t == 'D' ) {
|
||||
return String(dayDictionary[this.ts.getDay()]).slice(0, 3);
|
||||
}
|
||||
|
||||
throw new Error(`Invalid format for date ${t}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the current date object's month
|
||||
* @param t The format to get the date in
|
||||
* @returns A string of the formatted date
|
||||
*/
|
||||
public getMonth(t: monthType): string | number {
|
||||
// get the index of the current month
|
||||
let monthIndex: number = this.ts.getMonth();
|
||||
|
||||
if ( t === "n" ) {
|
||||
return (monthIndex + 1);
|
||||
} else if ( t === "m" ) {
|
||||
if ( mType === "single" ) {
|
||||
return String(monthIndex + 1);
|
||||
} else if ( mType === "double" ) {
|
||||
return String(monthIndex + 1).padStart(2, "0");
|
||||
} else if ( t === "M" ) {
|
||||
} else if ( mType === "short" ) {
|
||||
return monthDictionary[monthIndex].slice(0, 3);
|
||||
} else if ( t === "F" ) {
|
||||
} else {
|
||||
return monthDictionary[monthIndex];
|
||||
}
|
||||
|
||||
throw new Error(`Invalid format for date ${t}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the current date object's year
|
||||
* @param t The format to get the date in
|
||||
* @returns A string of the formatted date
|
||||
*/
|
||||
public getYear(t: yearType): string | number {
|
||||
|
||||
if ( t == "L" ) {
|
||||
return (TymeJS.isLeapYear(this.ts.getFullYear())) ? 1 : 0;
|
||||
} else if ( t == 'Y' ) {
|
||||
return this.ts.getFullYear();
|
||||
} else if ( t == 'y' ) {
|
||||
return String(this.ts.getFullYear()).slice(2);
|
||||
} else if ( t == 'o' ) {
|
||||
throw new Error(`Not yet implemented`);
|
||||
}
|
||||
|
||||
throw new Error(`Invalid format for year ${t}`);
|
||||
}
|
||||
|
||||
public static isLeapYear(year: number): boolean {
|
||||
return new Date(year, 1, 29).getDate() === 29;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
import TymeJS from "..";
|
||||
|
||||
let d: Date = new Date();
|
||||
|
||||
for ( let i = 0; i < 7; i++ ) {
|
||||
|
||||
const a = new TymeJS(d);
|
||||
console.log(d, {
|
||||
single: a.getDate("j"),
|
||||
double: a.getDate("d"),
|
||||
dowdouble: a.getDate("w"),
|
||||
full: a.getDate("l"),
|
||||
short: a.getDate("D"),
|
||||
});
|
||||
|
||||
d.setDate(d.getDate() + 1);
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
import TymeJS from "../index";
|
||||
|
||||
const a = new TymeJS();
|
||||
|
||||
console.log("🌍", a.format("m/d/Y"));
|
||||
console.log(a.format("d/m/Y"));
|
||||
console.log(a.format("d/m/Y h:i A"));
|
||||
console.log(a.format("d/m/Y H:i:s"));
|
||||
|
||||
console.log("\n🇺🇸\n", a.format("m/d/Y"));
|
||||
console.log(a.format("m/d/Y"));
|
||||
console.log(a.format("m/d/Y h:i A"));
|
||||
console.log(a.format("m/d/Y H:i:s"));
|
||||
|
||||
console.log("\n🖥\n", a.format("m/d/Y"));
|
||||
console.log(a.format("Y-m-d"));
|
||||
console.log(a.format("Y-m-d H:i:s"));
|
||||
|
||||
console.log(`\n`);
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import TymeJS from "..";
|
||||
import TymeJS from "../src";
|
||||
|
||||
for ( let i = 0; i < 12; i++ ) {
|
||||
|
||||
|
@ -8,10 +8,10 @@ for ( let i = 0; i < 12; i++ ) {
|
|||
const a = new TymeJS(currentMonth);
|
||||
|
||||
console.log({
|
||||
single: a.getMonth("n"),
|
||||
double: a.getMonth("m"),
|
||||
full: a.getMonth("F"),
|
||||
short: a.getMonth("M"),
|
||||
single: a.getMonth("single"),
|
||||
double: a.getMonth("double"),
|
||||
full: a.getMonth("full"),
|
||||
short: a.getMonth("short"),
|
||||
});
|
||||
}
|
||||
|
|
@ -42,12 +42,12 @@
|
|||
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
|
||||
|
||||
/* Emit */
|
||||
"declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
||||
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
||||
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
||||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
||||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
||||
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
|
||||
"outDir": "./lib", /* Specify an output folder for all emitted files. */
|
||||
"outDir": "./dist/", /* Specify an output folder for all emitted files. */
|
||||
// "removeComments": true, /* Disable emitting comments. */
|
||||
// "noEmit": true, /* Disable emitting files from a compilation. */
|
||||
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
||||
|
@ -97,7 +97,5 @@
|
|||
/* Completeness */
|
||||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
},
|
||||
"include": ["src"],
|
||||
"exclude": ["node_modules", "**/__tests__/*"]
|
||||
}
|
||||
}
|
||||
|
|
Reference in New Issue