add automatic paths to build tsconfig

This commit is contained in:
Rene
2021-04-08 22:10:29 +02:00
parent 61798a6b3c
commit fbd8008087
5 changed files with 98 additions and 71 deletions
+1
View File
@@ -38,6 +38,7 @@
"eslint-plugin-react-hooks": "^4.0.8",
"expect-playwright": "^0.3.1",
"express": "^4.17.1",
"glob": "^7.1.6",
"jest": "^26.6.0",
"jest-dev-server": "^4.4.0",
"jest-playwright-preset": "^1.4.5",
@@ -1,78 +1,10 @@
import 'styles/overlayscrollbars.scss';
import './index.scss';
import { createDiv, appendChildren, parent, style, on, off, addClass, WH, XY, clientSize } from 'support';
import { resize } from '@/testing-browser/Resize';
import { OverlayScrollbars } from 'overlayscrollbars';
const targetElm = document.querySelector('#target') as HTMLElement;
window.os = OverlayScrollbars({ target: targetElm, content: false });
export const resize = (element: HTMLElement) => {
const strMouseTouchDownEvent = 'mousedown touchstart';
const strMouseTouchUpEvent = 'mouseup touchend';
const strMouseTouchMoveEvent = 'mousemove touchmove';
const strSelectStartEvent = 'selectstart';
const dragStartSize: WH<number> = { w: 0, h: 0 };
const dragStartPosition: XY<number> = { x: 0, y: 0 };
const resizeBtn = createDiv('resizeBtn');
appendChildren(element, resizeBtn);
addClass(element, 'resizer');
let dragResizeBtn: HTMLElement | undefined;
let dragResizer: HTMLElement | undefined;
const onSelectStart = (event: Event) => {
event.preventDefault();
return false;
};
const resizerResize = (event: MouseEvent | TouchEvent) => {
const isTouchEvent = (event as TouchEvent).touches !== undefined;
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
const sizeStyle = {
width: dragStartSize.w + mouseOffsetHolder.pageX - dragStartPosition.x,
height: dragStartSize.h + mouseOffsetHolder.pageY - dragStartPosition.y,
};
style(dragResizer, sizeStyle);
event.stopPropagation();
};
const resizerResized = () => {
off(document, strSelectStartEvent, onSelectStart);
off(document, strMouseTouchMoveEvent, resizerResize);
off(document, strMouseTouchUpEvent, resizerResized);
dragResizer = undefined;
dragResizeBtn = undefined;
};
on(resizeBtn, strMouseTouchDownEvent, (event: MouseEvent | TouchEvent) => {
const { currentTarget } = event;
const correctButton = (event as MouseEvent).buttons === 1 || event.which === 1;
const isTouchEvent = (event as TouchEvent).touches !== undefined;
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
if (correctButton || isTouchEvent) {
dragStartPosition.x = mouseOffsetHolder.pageX;
dragStartPosition.y = mouseOffsetHolder.pageY;
dragResizeBtn = currentTarget as HTMLElement;
dragResizer = parent(currentTarget as HTMLElement) as HTMLElement;
const cSize = clientSize(element);
dragStartSize.w = cSize.w;
dragStartSize.h = cSize.h;
on(document, strSelectStartEvent, onSelectStart);
on(document, strMouseTouchMoveEvent, resizerResize);
on(document, strMouseTouchUpEvent, resizerResized);
event.preventDefault();
event.stopPropagation();
}
});
};
resize(document.querySelector('#resize')!);
resize(document.querySelector('#target')!);
+70
View File
@@ -0,0 +1,70 @@
// @ts-ignore
import { createDiv, appendChildren, parent, style, on, off, addClass, WH, XY, clientSize } from '@/overlayscrollbars/support';
export const resize = (element: HTMLElement) => {
const strMouseTouchDownEvent = 'mousedown touchstart';
const strMouseTouchUpEvent = 'mouseup touchend';
const strMouseTouchMoveEvent = 'mousemove touchmove';
const strSelectStartEvent = 'selectstart';
const dragStartSize: WH<number> = { w: 0, h: 0 };
const dragStartPosition: XY<number> = { x: 0, y: 0 };
const resizeBtn = createDiv('resizeBtn');
appendChildren(element, resizeBtn);
addClass(element, 'resizer');
let dragResizeBtn: HTMLElement | undefined;
let dragResizer: HTMLElement | undefined;
const onSelectStart = (event: Event) => {
event.preventDefault();
return false;
};
const resizerResize = (event: MouseEvent | TouchEvent) => {
const isTouchEvent = (event as TouchEvent).touches !== undefined;
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
const sizeStyle = {
width: dragStartSize.w + mouseOffsetHolder.pageX - dragStartPosition.x,
height: dragStartSize.h + mouseOffsetHolder.pageY - dragStartPosition.y,
};
style(dragResizer, sizeStyle);
event.stopPropagation();
};
const resizerResized = () => {
off(document, strSelectStartEvent, onSelectStart);
off(document, strMouseTouchMoveEvent, resizerResize);
off(document, strMouseTouchUpEvent, resizerResized);
dragResizer = undefined;
dragResizeBtn = undefined;
};
on(resizeBtn, strMouseTouchDownEvent, (event: MouseEvent | TouchEvent) => {
const { currentTarget } = event;
const correctButton = (event as MouseEvent).buttons === 1 || event.which === 1;
const isTouchEvent = (event as TouchEvent).touches !== undefined;
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
if (correctButton || isTouchEvent) {
dragStartPosition.x = mouseOffsetHolder.pageX;
dragStartPosition.y = mouseOffsetHolder.pageY;
dragResizeBtn = currentTarget as HTMLElement;
dragResizer = parent(currentTarget as HTMLElement) as HTMLElement;
const cSize = clientSize(element);
dragStartSize.w = cSize.w;
dragStartSize.h = cSize.h;
on(document, strSelectStartEvent, onSelectStart);
on(document, strMouseTouchMoveEvent, resizerResize);
on(document, strMouseTouchUpEvent, resizerResized);
event.preventDefault();
event.stopPropagation();
}
});
};
+4 -1
View File
@@ -1,6 +1,9 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "./src/"
"baseUrl": "./src/",
"paths": {
"@/overlayscrollbars*": ["../../overlayscrollbars/src*"]
}
}
}
+22 -1
View File
@@ -9,6 +9,7 @@ const del = require('del');
const fs = require('fs');
const path = require('path');
const chalk = require('chalk');
const glob = require('glob');
const resolve = require('./resolve.config.json');
const isTestEnv = process.env.NODE_ENV === 'test';
@@ -124,6 +125,7 @@ const resolveConfig = (config, userConfig) => {
};
const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, silent, fast } = {}) => {
const repoPackageJson = require(path.resolve(__dirname, 'package.json'));
const projectPath = resolvePath(__dirname, project);
const relativeBackPath = path.relative(projectPath, __dirname);
const projectName = path.basename(project);
@@ -189,6 +191,21 @@ const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, si
});
const genConfig = ({ esm, typeDeclaration }) => {
const { exclude, compilerOptions } = require(tsconfigJSONPath);
const { paths } = compilerOptions || {};
const finalPaths = paths || {};
const workspacesPaths = repoPackageJson.workspaces
.map((pattern) => glob.sync(pattern, { cwd: __dirname }))
.reduce((arr, paths) => {
arr.push(...paths);
return arr;
}, [])
.reduce((obj, resolvedPath) => {
const absolutePath = path.resolve(__dirname, resolvedPath);
obj[`@/${path.basename(absolutePath)}*`] = [`${normalizePath(path.resolve(absolutePath, rollupConfigDefaults.src))}*`];
return obj;
}, {});
const pipelineMap = {
typescript: isTypeScriptProject
? rollupTypescript({
@@ -202,8 +219,12 @@ const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, si
sourceMap: sourcemap,
declaration: typeDeclaration && types !== null,
declarationDir: typesPath,
paths: {
...finalPaths,
...workspacesPaths,
},
},
exclude: (require(tsconfigJSONPath).exclude || []).concat(testsPath),
exclude: (exclude || []).concat(testsPath),
},
include: ['*.ts+(|x)', '**/*.ts+(|x)'].map(prependBackPath),
exclude: ['*.d.ts', '**/*.d.ts'].map(prependBackPath),