Transpile modules to dist

This commit is contained in:
Vasili Karaev 2022-10-10 16:18:18 +03:00
parent 61098bea1f
commit 5580fad62f
17 changed files with 136 additions and 10 deletions

13
.babelrc Normal file
View File

@ -0,0 +1,13 @@
{
"targets": "defaults",
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
],
"plugins": [
[ "@babel/plugin-proposal-decorators", { "legacy": true } ],
[ "@babel/plugin-proposal-class-properties" ],
[ "jsx-control-statements" ]
]
}

View File

@ -14,6 +14,10 @@
"document": true,
"window": true
},
"ignorePatterns": [
"**/dist/*.js",
"**/node_modules"
],
"rules": {
"semi": ["error", "never"],
"curly": ["error", "all"],

View File

@ -1,6 +1,6 @@
import axios, { AxiosRequestConfig } from 'axios'
import logger from 'lib/logger'
import logger from '@lib/logger'
import { ApiError } from './error'
const retrieve = async (

1
dist/api.js vendored Normal file
View File

@ -0,0 +1 @@
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("qs"),require("ramda"),require("sprintf-js"),require("axios"),require("loglevel")):"function"==typeof define&&define.amd?define([,,,,],r):"object"==typeof exports?exports.lib=r(require("qs"),require("ramda"),require("sprintf-js"),require("axios"),require("loglevel")):(e.lib=e.lib||{},e.lib.api=r(e[void 0],e[void 0],e[void 0],e[void 0],e[void 0]))}(this,(function(e,r,t,n,o){return function(){"use strict";var i={996:function(e,r,t){var n=t(740);const o=t.n(n)().getLogger("default");o.setLevel("production"===process.env.NODE_ENV?"WARN":"DEBUG"),r.default=o},58:function(e){e.exports=n},740:function(e){e.exports=o},892:function(r){r.exports=e},757:function(e){e.exports=r},780:function(e){e.exports=t}},u={};function a(e){var r=u[e];if(void 0!==r)return r.exports;var t=u[e]={exports:{}};return i[e](t,t.exports,a),t.exports}a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,{a:r}),r},a.d=function(e,r){for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return function(){var e;a.r(s),a.d(s,{ApiMethodFactory:function(){return y},HttpMethod:function(){return r}}),function(e){e.GET="GET",e.POST="POST",e.PUT="PUT",e.PATCH="PATCH",e.DELETE="DELETE"}(e||(e={}));var r=e,t=a(892),n=a.n(t),o=a(757),i=a(780),u=a(58),d=a.n(u),c=a(996);function l(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}class f extends Error{constructor(e){var r,t,n,o;super(e.message),l(this,"errorCode",void 0),l(this,"errorMessage",void 0),this.errorCode=(null==e||null===(r=e.response)||void 0===r||null===(t=r.data)||void 0===t?void 0:t.errorCode)??-1,this.errorMessage=null==e||null===(n=e.response)||void 0===n||null===(o=n.data)||void 0===o?void 0:o.errorMessage}}const p=async function(e){let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{const{data:r}=await d()(e);return r}catch(t){if(null!=t&&t.hasAuthenticated&&!r)return p(e,!0);throw new f(t)}};var v=function(e){let{throwOnError:r=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c.default.debug(e,`throwOnError: ${r}`),p(e)};function h(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var y=class{constructor(e){var t=this;let{apiPrefix:u}=e;h(this,"apiPrefix",void 0),h(this,"makePath",((e,r)=>t=>{const n=`${this.apiPrefix}${t}`;if(o.isEmpty(r))return n;const u=o.pick(r,e);if(o.isEmpty(u))throw Error("api: empty path data");return(0,i.sprintf)(n,u)})),h(this,"makeEndpoint",((e,r,t,n)=>o.compose(this.addQuery(r,n),this.makePath(r,t))(e))),h(this,"addQuery",((e,r)=>t=>{if(o.isEmpty(r))return t;const i=o.pick(r,e);if(o.isEmpty(i))throw Error("api: empty query data");return`${t}?${n().stringify(i)}`})),h(this,"make",(function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.GET,{path:i=[],query:u=[],isFormData:a=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return async function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const d=e=>{if(o.isNil(e)||e instanceof FormData)return e;const r=o.pipe(o.omit(o.concat(i,u)),o.when(o.isEmpty,o.always(null)))(e);if(a){const r=new FormData;return o.forEachObjIndexed(((e,t)=>r.append(t,e)),e),r}return r},c=d(r),l=t.makeEndpoint(e,r,i,u);return await v({method:n,url:l,data:c,headers:s})}})),this.apiPrefix=u}}}(),s}()}));

1
dist/fn.js vendored Normal file
View File

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ramda")):"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.lib=t(require("ramda")):(e.lib=e.lib||{},e.lib.fn=t(e[void 0]))}(this,(function(e){return function(){"use strict";var t={757:function(t){t.exports=e}},o={};function r(e){var n=o[e];if(void 0!==n)return n.exports;var i=o[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return function(){r.r(n),r.d(n,{thread:function(){return t}});const e=r(757).pipe,t=(t,o)=>e(...o)(t)}(),n}()}));

1
dist/form.js vendored Normal file
View File

@ -0,0 +1 @@
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("mobx"),require("loglevel")):"function"==typeof define&&define.amd?define([,],e):"object"==typeof exports?exports.lib=e(require("mobx"),require("loglevel")):(t.lib=t.lib||{},t.lib.form=e(t[void 0],t[void 0]))}(this,(function(t,e){return function(){"use strict";var r={996:function(t,e,r){var i=r(740);const o=r.n(i)().getLogger("default");o.setLevel("production"===process.env.NODE_ENV?"WARN":"DEBUG"),e.default=o},740:function(t){t.exports=e},205:function(e){e.exports=t}},i={};function o(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={exports:{}};return r[t](n,n.exports,o),n.exports}o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return function(){o.r(n),o.d(n,{FormStore:function(){return g}});var t,e,r,i,u,s,a,l,p,b=o(205),c=o(996);function d(t,e,r,i){r&&Object.defineProperty(t,e,{enumerable:r.enumerable,configurable:r.configurable,writable:r.writable,value:r.initializer?r.initializer.call(i):void 0})}function f(t,e,r,i,o){var n={};return Object.keys(i).forEach((function(t){n[t]=i[t]})),n.enumerable=!!n.enumerable,n.configurable=!!n.configurable,("value"in n||n.initializer)&&(n.writable=!0),n=r.slice().reverse().reduce((function(r,i){return i(t,e,r)||r}),n),o&&void 0!==n.initializer&&(n.value=n.initializer?n.initializer.call(o):void 0,n.initializer=void 0),void 0===n.initializer&&(Object.defineProperty(t,e,n),n=null),n}let y=(t=class{constructor(){d(this,"dirty",e,this),d(this,"errors",r,this),d(this,"submitError",i,this),d(this,"valid",u,this),d(this,"submitted",s,this),d(this,"submitting",a,this),d(this,"touched",l,this),d(this,"loading",p,this)}setDirty(t){this.dirty=t}setErrors(t){this.errors=t}setSubmitError(t){this.submitError=t}setSubmitted(t){this.submitted=t}setTouched(t){this.touched=t}setSubmitting(t){this.submitting=t}setValid(t){this.valid=t}setLoading(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.loading=t}async handleSubmit(t){try{this.setTouched(!0),this.setLoading(),this.setSubmitError(null),await(null==t?void 0:t()),this.setSubmitting(!1),this.setLoading(!1)}catch(t){t instanceof Error?(c.default.error(t.message),this.setSubmitError(t.message),this.setLoading(!1)):c.default.error("Unknown error form store")}}},e=f(t.prototype,"dirty",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),r=f(t.prototype,"errors",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),i=f(t.prototype,"submitError",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return null}}),u=f(t.prototype,"valid",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!0}}),s=f(t.prototype,"submitted",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),a=f(t.prototype,"submitting",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),l=f(t.prototype,"touched",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),p=f(t.prototype,"loading",[b.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),f(t.prototype,"setDirty",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setDirty"),t.prototype),f(t.prototype,"setErrors",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setErrors"),t.prototype),f(t.prototype,"setSubmitError",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setSubmitError"),t.prototype),f(t.prototype,"setSubmitted",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setSubmitted"),t.prototype),f(t.prototype,"setTouched",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setTouched"),t.prototype),f(t.prototype,"setSubmitting",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setSubmitting"),t.prototype),f(t.prototype,"setValid",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setValid"),t.prototype),f(t.prototype,"setLoading",[b.action],Object.getOwnPropertyDescriptor(t.prototype,"setLoading"),t.prototype),t);var g=y}(),n}()}));

1
dist/logger.js vendored Normal file
View File

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("loglevel")):"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.lib=t(require("loglevel")):(e.lib=e.lib||{},e.lib.logger=t(e[void 0]))}(this,(function(e){return function(){"use strict";var t={740:function(t){t.exports=e}},o={};function r(e){var n=o[e];if(void 0!==n)return n.exports;var u=o[e]={exports:{}};return t[e](u,u.exports,r),u.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return function(){r.r(n),r.d(n,{pipelog:function(){return o}});var e=r(740);const t=r.n(e)().getLogger("default");t.setLevel("production"===process.env.NODE_ENV?"WARN":"DEBUG");const o=function(){for(var e=arguments.length,o=new Array(e),r=0;r<e;r++)o[r]=arguments[r];return e=>(t.debug(...o,e),e)};n.default=t}(),n}()}));

1
dist/pagination.js vendored Normal file
View File

@ -0,0 +1 @@
!function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i(require("mobx")):"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports.lib=i(require("mobx")):(e.lib=e.lib||{},e.lib.pagination=i(e[void 0]))}(this,(function(e){return function(){"use strict";var i={205:function(i){i.exports=e}},t={};function r(e){var n=t[e];if(void 0!==n)return n.exports;var o=t[e]={exports:{}};return i[e](o,o.exports,r),o.exports}r.d=function(e,i){for(var t in i)r.o(i,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:i[t]})},r.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return function(){r.r(n),r.d(n,{PaginationStore:function(){return p}});var e,i,t,o,a,l,u,c=r(205);function b(e,i,t,r){t&&Object.defineProperty(e,i,{enumerable:t.enumerable,configurable:t.configurable,writable:t.writable,value:t.initializer?t.initializer.call(r):void 0})}function f(e,i,t,r,n){var o={};return Object.keys(r).forEach((function(e){o[e]=r[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=t.slice().reverse().reduce((function(t,r){return r(e,i,t)||t}),o),n&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(n):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(e,i,o),o=null),o}let s=(i=f((e=class{constructor(){b(this,"page",i,this),b(this,"pageSize",t,this),b(this,"filter",o,this),b(this,"changePage",a,this),b(this,"search",l,this),b(this,"reset",u,this)}}).prototype,"page",[c.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 1}}),t=f(e.prototype,"pageSize",[c.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 30}}),o=f(e.prototype,"filter",[c.observable],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),a=f(e.prototype,"changePage",[c.action],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){var e=this;return function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30;e.page=i,e.pageSize=t}}}),l=f(e.prototype,"search",[c.action],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return e=>{this.filter=e,this.page=1}}}),u=f(e.prototype,"reset",[c.action],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return()=>{this.page=1,this.pageSize=30,this.filter=""}}}),e);var p=s}(),n}()}));

1
dist/routing.js vendored Normal file
View File

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ramda"),require("react"),require("react-router-dom")):"function"==typeof define&&define.amd?define([,,],t):"object"==typeof exports?exports.lib=t(require("ramda"),require("react"),require("react-router-dom")):(e.lib=e.lib||{},e.lib.routing=t(e[void 0],e[void 0],e[void 0]))}(this,(function(e,t,r){return function(){"use strict";var o={757:function(t){t.exports=e},225:function(e){e.exports=t},471:function(e){e.exports=r}},n={};function c(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return o[e](r,r.exports,c),r.exports}c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,{a:t}),t},c.d=function(e,t){for(var r in t)c.o(t,r)&&!c.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var u={};return function(){c.r(u),c.d(u,{Router:function(){return l},prepareRoutes:function(){return r}});var e=c(757);const t=r=>{if(!r.childRoutes||!r.childRoutes.length)return;const o=r.childRoutes.find(e.propOr(!1,"isIndex"));if(o){const e={...o,path:r.path,exact:!0};r.childRoutes.unshift(e)}r.childRoutes.forEach(t)},r=e.pipe(e.filter((e=>Boolean(e.redirect||e.component||e.childRoutes&&e.childRoutes.length>0))),e.forEach(t));var o=c(225),n=c.n(o),i=c(471);const a=(e,t,r)=>{const o=[],c=(e,t)=>{let r;if(r=/(^\/)|(^\*)/.test(e.path)?e.path:`${t}/${e.path}`,r=r.replace(/\/+/g,"/"),e.redirect){const t=n().createElement(i.Route,{exact:!0,key:r,render:()=>n().createElement(i.Redirect,{to:e.redirect}),path:r});o.push(t)}else if(e.component&&e.childRoutes){const t=a(e.component,e.childRoutes,r);o.push(t)}else if(e.component){const t=((e,t)=>n().createElement(i.Route,{exact:!0,key:e,component:t,path:e}))(r,e.component);o.push(t)}else e.childRoutes&&e.childRoutes.forEach((e=>c(e,r)))};return t.forEach((e=>c(e,r))),e?n().createElement(e,{key:r},n().createElement(i.Switch,null,o)):n().createElement(i.Switch,null,o)};var l=e=>{const{routeConfig:t,component:o,baseUrlPath:c}=e,u=r(t);return n().createElement(i.BrowserRouter,null,a(o,u,c))}}(),u}()}));

View File

@ -1,6 +1,6 @@
import { observable, action } from 'mobx'
import logger from 'lib/logger'
import logger from '@lib/logger'
class FormStore {
@observable dirty: boolean = false

1
form/index.ts Normal file
View File

@ -0,0 +1 @@
export { default as FormStore } from './FormStore'

View File

@ -1,14 +1,17 @@
{
"name": "lib",
"version": "0.1.0",
"license": "MIT",
"scripts": {
"build": "webpack --mode=production"
},
"exports": {
"./*": "./dist/*.js"
},
"dependencies": {
"@types/qs": "^6.9.7",
"@types/ramda": "^0.27.63",
"@types/react": "^17.0.15",
"@types/react-router-dom": "^5.1.8",
"@types/sprintf-js": "^1.1.2",
"axios": "^0.21.1",
"loglevel": "^1.7.1",
"mobx": "^6.6.2",
"modern-css-reset": "^1.4.0",
"qs": "^6.10.1",
"ramda": "^0.27.1",
@ -16,5 +19,24 @@
"react-router-dom": "^5.2.0",
"sass-rem": "^3.0.0",
"sprintf-js": "^1.1.2"
},
"devDependencies": {
"@babel/core": "^7.19.3",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.19.3",
"@babel/preset-env": "^7.19.3",
"@babel/preset-react": "^7.18.6",
"@babel/preset-typescript": "^7.18.6",
"@types/qs": "^6.9.7",
"@types/ramda": "^0.27.63",
"@types/react": "^17.0.15",
"@types/react-router-dom": "^5.1.8",
"@types/sprintf-js": "^1.1.2",
"babel-loader": "^8.2.5",
"babel-plugin-jsx-control-statements": "^4.1.2",
"ts-loader": "^9.4.1",
"ts-node": "^10.9.1",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0"
}
}

1
pagination/index.ts Normal file
View File

@ -0,0 +1 @@
export { default as PaginationStore } from './PaginationStore'

View File

@ -1,4 +1,5 @@
import * as R from 'ramda'
import Route from './Route'
// Handle isIndex property of route config:
@ -8,7 +9,7 @@ const handleIndexRoute = (route: Route) => {
return
}
const indexRoute = route.childRoutes.find(R.prop('isIndex'))
const indexRoute = route.childRoutes.find(R.propOr(false, 'isIndex'))
if (indexRoute) {
const first = {

2
routing/index.ts Normal file
View File

@ -0,0 +1,2 @@
export { prepareRoutes } from './config'
export { default as Router } from './Router'

View File

@ -12,6 +12,9 @@
"dom",
"dom.iterable",
"esnext"
]
}
],
"paths": {
"@lib/*": ["./*"]
}
},
}

73
webpack.config.ts Normal file
View File

@ -0,0 +1,73 @@
import path from 'path'
export default {
entry: {
fn: './fn/index.ts',
api: './api/index.ts',
form: './form/index.ts',
logger: './logger/index.ts',
routing: './routing/index.ts',
pagination: './pagination/index.ts',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
library: {
name: ['lib', '[name]'],
type: 'umd',
},
globalObject: 'this',
},
externals: {
qs: {
commonjs: 'qs',
commonjs2: 'qs',
},
mobx: {
commonjs: 'mobx',
commonjs2: 'mobx',
},
axios: {
commonjs: 'axios',
commonjs2: 'axios',
},
ramda: {
commonjs: 'ramda',
commonjs2: 'ramda',
},
loglevel: {
commonjs: 'loglevel',
commonjs2: 'loglevel',
},
'sprintf-js': {
commonjs: 'sprintf-js',
commonjs2: 'sprintf-js',
},
react: {
commonjs: 'react',
commonjs2: 'react',
},
'react-router-dom': {
commonjs: 'react-router-dom',
commonjs2: 'react-router-dom',
},
},
optimization: {
nodeEnv: false,
},
module: {
rules: [
{
test: /\.ts(x?)$/,
loader: 'babel-loader',
exclude: /node_modules/,
},
],
},
resolve: {
alias: {
'@lib': __dirname,
},
extensions: ['.ts', '.tsx'],
},
}