TINY-8299: Update webpack, webpack-dev-server, and friends (#7763)

* TINY-7654: Upgrade to latest ts-loader and webpack for demos

* TINY-7654: Upgrade to bedrock 13

* TINY-7654: Reworked how TinyMCE demos are done to work better with project references

* TINY-7654: Tweaks/patches to try to improve compile time

* TINY-7654: Upgrade to webpack-dev-server 4

(cherry picked from commit 45e8d7891cf502bd03db08da193011b340557a7e)

* TINY-8299: Let grunt-webpack merge the config for us. Made the webpack config lazy to speed up initial grunt load. Fix some issues with the Alloy webpack-dev-server config.

* TINY-8299: Remove ES5 spec that was brought in from an old branch

* TINY-8299: Removed extra argument that was missed in the cleanup

* TINY-8299: removed old `grunt webpack` task that we don't use anymore

* TINY-8299: Corrected contributing guide to match how webpack-dev-server is now used

* TINY-8299: Fixed harmless console error in model demo

Co-authored-by: Lee Newson <lee.newson@tiny.cloud>
This commit is contained in:
Andrew Herron
2022-04-22 15:05:12 +10:00
committed by GitHub
parent e00d713d1b
commit e79c08b4e6
31 changed files with 2763 additions and 3014 deletions

View File

@ -11,8 +11,6 @@ This repo is built with Yarn workspaces and uses publish tooling support from Le
An important feature of this monorepo is the use of TypeScript 3.0 features "project references" and "build mode":
https://www.typescriptlang.org/docs/handbook/project-references.html
These are still quite new and some of the tooling is still catching up (e.g. webpack needs `tsc -b -w` running in the background).
### A quick note about `modules`
Most monorepos use a `packages` folder to hold the included projects, but we have chosen `modules` instead. There are few reasons for this:
@ -58,9 +56,7 @@ There are many top-level helper scripts for TinyMCE and Oxide (the default skin)
### TinyMCE
`yarn start`
This boots the TinyMCE webpack dev server at http://localhost:3000 and also starts a TypeScript watch process. With this running changes to _any_ `.ts` source file in the monorepo (excluding tests) should be reflected in WebPack within a few seconds.
If WebPack later adds supports for TypeScript build mode the background TypeScript watch process won't be necessary which will speed up round trip time.
This boots the TinyMCE webpack dev server at http://localhost:3000. With this running changes to _any_ `.ts` source file in the monorepo (excluding tests) should be reflected in WebPack within a few seconds.
`yarn watch`
runs `tsc -b -w` for those times when you don't need to iterate in the browser.

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/acid/demo/Demo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/agar/demo/RunDemos.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,17 +1,16 @@
const LiveReloadPlugin = require('webpack-livereload-plugin');
let { TsConfigPathsPlugin } = require('awesome-typescript-loader');
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
const swag = require('@ephox/swag');
let create = (inFile, outFile) => {
const create = (inFile, outFile) => {
const tsConfig = "tsconfig.json";
return {
entry: inFile,
mode: 'development',
devtool: 'source-map',
mode: 'development',
target: ['web'],
optimization: {
removeAvailableModules: false,
removeEmptyChunks: false,
@ -21,40 +20,47 @@ let create = (inFile, outFile) => {
symlinks: false,
extensions: ['.ts', '.js'],
plugins: [
// We need to use the awesome typescript loader config paths since the one for ts-loader doesn't resolve aliases correctly
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript',
configFileName: tsConfig
})
configFile: tsConfig,
extensions: ['.ts', '.js']
}),
]
},
ignoreWarnings: [
// suppress type re-export warnings caused by `transpileOnly: true`
// See https://github.com/TypeStrong/ts-loader#transpileonly
/export .* was not found in/
],
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js|\.ts$/,
use: ['@ephox/swag/webpack/remapper']
},
{
test: /\.ts$/,
use: [
{
loader: 'ts-loader',
options: {
transpileOnly: true,
compilerOptions: {
declarationMap: false
},
configFile: tsConfig,
experimentalWatchApi: true
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true,
configFile: tsConfig,
compilerOptions: {
declarationMap: false
}
}
]
}]
}
]
},
plugins: [
new LiveReloadPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: path.basename(outFile),
@ -65,8 +71,8 @@ let create = (inFile, outFile) => {
};
module.exports = function (grunt) {
var packageData = grunt.file.readJSON('package.json');
module.exports = (grunt) => {
const packageData = grunt.file.readJSON('package.json');
grunt.initConfig({
pkg: packageData,
@ -76,16 +82,20 @@ module.exports = function (grunt) {
},
'webpack-dev-server': {
demos: create('./src/demo/ts/ephox/alloy/demo/Demos.ts', 'scratch/compiled/demo.js'),
options: {
webpack: [
create('./src/demo/ts/ephox/alloy/demo/Demos.ts', 'scratch/compiled/demo.js')
],
inline: false,
port: 3003,
host: '0.0.0.0',
disableHostCheck: true
},
start: { }
devServer: {
port: 3003,
host: '0.0.0.0',
allowedHosts: 'all',
hot: false,
liveReload: false,
static: {
publicPath: '/',
directory: path.join(__dirname, '/src/demo')
},
}
}
},
rollup: {

View File

@ -25,6 +25,7 @@
"test": "bedrock-auto -b chrome-headless --testdirs src/test/ts/atomic src/test/ts/browser src/test/ts/jsdom src/test/ts/webdriver",
"test-manual": "bedrock --testdirs src/test/ts/atomic src/test/ts/browser src/test/ts/jsdom src/test/ts/webdriver",
"lint": "eslint --config ../../.eslintrc.json src/**/*.ts",
"start": "grunt dev",
"prepublishOnly": "tsc -b"
},
"repository": {

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/boss/demo/BossDemo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/main/ts/ephox/boulder/api/Main.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/darwin/demo/DarwinTableDemo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/dragster/demo/DragsterDemo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="/demo.js"></script>
<script src="../../../scratch/compiled/demo.js"></script>
</head>
<body>
Check the console log for messages.

View File

@ -1,35 +1,58 @@
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
const inFile = './src/demo/ts/Demo.ts';
const outFile = './scratch/compiles/demo.js';
module.exports = {
entry: inFile,
mode: 'development',
entry: './src/demo/ts/Demo.ts',
devtool: 'source-map',
optimization: {
removeAvailableModules: false,
removeEmptyChunks: false,
splitChunks: false,
},
mode: 'development',
target: ['web'],
resolve: {
symlinks: false,
extensions: ['.ts', '.js']
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
enforce: 'pre'
},
{
test: /\.ts$/,
use: [
{
loader: 'ts-loader'
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
]
}]
}
]
},
plugins: [
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: path.basename(outFile),
path: path.resolve(path.dirname(outFile)),
pathinfo: false
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/katamari/demo/Demo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/mcagar/demo/Demo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,4 +1,5 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
@ -8,19 +9,27 @@ module.exports = {
search: './src/demo/ts/ephox/phoenix/demo/SearchDemo.ts'
},
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -29,17 +38,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: '[name]-demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/polaris/demo/Demo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/porkbun/demo/Demo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/robin/demo/WordSelectDemo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/sand/demo/Demo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,26 +1,33 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: {
picker: './src/demo/ts/ephox/snooker/demo/PickerDemo.ts',
pickerRtl: './src/demo/ts/ephox/snooker/demo/PickerDemoRtl.ts',
detect: './src/demo/ts/ephox/snooker/demo/DetectDemo.ts',
},
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -29,17 +36,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: '[name]-demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -1,22 +1,31 @@
const { CheckerPlugin, TsConfigPathsPlugin } = require('awesome-typescript-loader')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
module.exports = {
entry: './src/demo/ts/ephox/sugar/demo/Demo.ts',
devtool: 'source-map',
mode: 'development',
target: ['web'],
resolve: {
extensions: ['.ts', '.js'],
plugins: [
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript'
extensions: ['.ts', '.js']
}),
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.js$/,
use: ['source-map-loader'],
@ -25,17 +34,23 @@ module.exports = {
{
test: /\.ts$/,
use: ['awesome-typescript-loader']
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
projectReferences: true
}
}]
}
]
},
plugins: [
new CheckerPlugin()
new ForkTsCheckerWebpackPlugin({ async: true })
],
output: {
filename: 'demo.js',
path: path.resolve(__dirname, './scratch/compiled')
}
};
};

View File

@ -8,6 +8,7 @@ let zipUtils = require('./tools/modules/zip-helper');
let gruntUtils = require('./tools/modules/grunt-utils');
let gruntWebPack = require('./tools/modules/grunt-webpack');
let swag = require('@ephox/swag');
let path = require('path');
let plugins = [
'advlist', 'anchor', 'autolink', 'autoresize', 'autosave', 'charmap', 'code', 'codesample',
@ -279,32 +280,25 @@ module.exports = function (grunt) {
})
),
webpack: Object.assign(
{core: () => {
gruntWebPack.create('src/core/demo/ts/demo/Demos.ts', 'tsconfig.json', 'scratch/demos/core', 'demo.js');
gruntWebPack.create('src/core/demo/ts/demo/ContentSecurityPolicyDemo.ts', 'tsconfig.json', 'scratch/demos/core', 'cspdemo.js');
}},
{plugins: () => gruntWebPack.allPluginDemos(plugins)},
{themes: () => {
gruntWebPack.allThemeDemos(themes);
}},
{models: () => gruntWebPack.allModelDemos(models)},
gruntUtils.generate(plugins, 'plugin', (name) => () => gruntWebPack.createPlugin(name) ),
gruntUtils.generate(themes, 'theme', (name) => () => gruntWebPack.createTheme(name) ),
gruntUtils.generate(models, 'model', (name) => () => gruntWebPack.createModel(name) )
),
'webpack-dev-server': {
everything: () => gruntWebPack.all(plugins, themes, models),
options: {
webpack: gruntWebPack.all(plugins, themes, models),
publicPath: '/',
inline: false,
port: grunt.option('webpack-port') !== undefined ? grunt.option('webpack-port') : 3000,
host: '0.0.0.0',
disableHostCheck: true,
before: app => gruntWebPack.generateDemoIndex(grunt, app, plugins, themes, models)
devServer: {
port: grunt.option('webpack-port') !== undefined ? grunt.option('webpack-port') : 3000,
host: '0.0.0.0',
allowedHosts: 'all',
static: {
publicPath: '/',
directory: path.join(__dirname)
},
hot: false,
liveReload: false,
setupMiddlewares: (middlewares, devServer) => {
gruntWebPack.generateDemoIndex(grunt, devServer.app, plugins, themes, models);
return middlewares;
}
}
},
start: { }
},
concat: Object.assign({

View File

@ -24,8 +24,5 @@
<script src="../../../../../../js/tinymce/tinymce.js"></script>
<script src="../../../../../../scratch/demos/models/dom/demo.js"></script>
<script>
demos.BasicDemo();
</script>
</body>
</html>

View File

@ -1,38 +1,67 @@
let { TsConfigPathsPlugin } = require('awesome-typescript-loader');
let LiveReloadPlugin = require('webpack-livereload-plugin');
let path = require('path');
let fs = require('fs');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const path = require('path');
const fs = require('fs');
const webpack = require('webpack');
const packageData = require("../../package.json");
const packageData = require('../../package.json');
let create = (entries, tsConfig, outDir, filename) => {
let create = (entries, tsConfig, outDir = '.') => {
const tsConfigPath = path.resolve(tsConfig);
const resolvedEntries = Object.entries(entries).reduce((acc, entry) => {
acc[entry[0]] = path.resolve('./' + entry[1]);
return acc;
}, {});
return {
entry: entries,
entry: resolvedEntries,
mode: 'development',
devtool: 'source-map',
devtool: 'inline-source-map',
target: 'web',
optimization: {
removeAvailableModules: false,
removeEmptyChunks: false,
splitChunks: false,
},
infrastructureLogging: {
level: 'log'
},
ignoreWarnings: [
// suppress type re-export warnings caused by `transpileOnly: true`
// See https://github.com/TypeStrong/ts-loader#transpileonly
/export .* was not found in/
],
resolve: {
symlinks: false,
extensions: ['.ts', '.js'],
extensions: [ '.ts', '.js' ],
plugins: [
// We need to use the awesome typescript loader config paths since the one for ts-loader doesn't resolve aliases correctly
new TsConfigPathsPlugin({
baseUrl: '.',
compiler: 'typescript',
configFileName: tsConfig
configFile: tsConfigPath,
extensions: [ '.ts', '.js' ]
})
]
},
module: {
rules: [
{
test: /\.js$/,
resolve: {
fullySpecified: false
}
},
{
test: /\.(js|mjs)$/,
use: ['source-map-loader'],
enforce: 'pre'
},
{
test: /\.(svg)$/i,
loader: 'raw-loader',
type: 'javascript/auto'
type: 'asset/source'
},
{
resourceQuery: /raw/,
type: 'asset/source'
},
{
test: /\.(js|mjs|ts)$/,
use: [ '@ephox/swag/webpack/remapper' ]
},
{
test: /\.ts$/,
@ -60,12 +89,9 @@ let create = (entries, tsConfig, outDir, filename) => {
{
loader: 'ts-loader',
options: {
configFile: tsConfigPath,
transpileOnly: true,
compilerOptions: {
declarationMap: false
},
configFile: tsConfig,
experimentalWatchApi: true
projectReferences: true
}
}
]
@ -73,72 +99,67 @@ let create = (entries, tsConfig, outDir, filename) => {
]
},
plugins: [
new LiveReloadPlugin()
// See https://github.com/TypeStrong/ts-loader#usage-with-webpack-watch
new webpack.WatchIgnorePlugin({
paths: [
// Ignore generated .js, .map and .d.ts output files
/tinymce\/modules\/.*\/lib\/.*\.(js|map|d\.ts)$/,
// Something seems to trigger that node module package.json files change when they
// haven't, so lets just ignore them entirely
/node_modules\/.*\/package\.json$/
]
}),
],
output: {
filename: typeof entries === 'string' ? filename : "[name]/" + filename,
filename: '[name]',
path: path.resolve(outDir),
pathinfo: false
},
stats: {
assets: false,
modulesSpace: 5
}
};
};
let buildDemoEntries = (typeNames, type, demo) => typeNames.reduce(
const buildDemoEntries = (typeNames, type, demo, pathPrefix = '') => typeNames.reduce(
(acc, name) => {
var tsfile = `src/${type}/${name}/demo/ts/demo/${demo}`;
if (fs.existsSync(tsfile)) { acc[name] = tsfile; }
const tsfile = `src/${type}/${name}/demo/ts/demo/${demo}`;
if (fs.existsSync(tsfile)) { acc[`${pathPrefix}${type}/${name}/demo.js`] = tsfile; }
return acc;
}, {}
);
let buildEntries = (typeNames, type, entry) => typeNames.reduce(
const buildEntries = (typeNames, type, entry, pathPrefix = '') => typeNames.reduce(
(acc, name) => {
acc[name] = `src/${type}/${name}/main/ts/${entry}`;
const fileName = type.replace(/s$/, '') + '.js';
acc[`${pathPrefix}${type}/${name}/${fileName}`] = `src/${type}/${name}/main/ts/${entry}`;
return acc;
}, {}
);
let createPlugin = (name) => {
return create(`src/plugins/${name}/demo/ts/demo/Demo.ts`, 'tsconfig.plugin.json', `scratch/demos/plugins/${name}/`, 'demo.js');
};
let createTheme = (name) => {
return create(`src/themes/${name}/demo/ts/demo/Demos.ts`, 'tsconfig.theme.json', `scratch/demos/themes/${name}`, 'demo.js');
};
let createModel = (name) => {
return create(`src/models/${name}/demo/ts/demo/Demo.ts`, 'tsconfig.model.json', `scratch/demos/models/${name}`, 'demo.js');
};
let allPluginDemos = (plugins) => {
return create(buildDemoEntries(plugins, 'plugins', 'Demo.ts'), 'tsconfig.plugin.json', 'scratch/demos/plugins', 'demo.js')
};
let allThemeDemos = (themes) => {
return create(buildDemoEntries(themes, 'themes', 'Demos.ts'), 'tsconfig.theme.json', 'scratch/demos/themes', 'demo.js')
};
let allModelDemos = (models) => {
return create(buildDemoEntries(models, 'models', 'Demo.ts'), 'tsconfig.model.json', 'scratch/demos/models', 'demo.js')
};
let all = (plugins, themes, models) => {
const all = (plugins, themes, models) => {
return [
allPluginDemos(plugins),
allThemeDemos(themes),
allModelDemos(models),
create(`src/core/demo/ts/demo/Demos.ts`, 'tsconfig.json', 'scratch/demos/core/', 'demo.js'),
create('src/core/demo/ts/demo/ContentSecurityPolicyDemo.ts', 'tsconfig.json', 'scratch/demos/core/', 'cspdemo.js'),
create('src/core/main/ts/api/Main.ts', 'tsconfig.json', 'js/tinymce/', 'tinymce.js'),
create(buildEntries(plugins, 'plugins', 'Main.ts'), 'tsconfig.plugin.json', 'js/tinymce/plugins', 'plugin.js'),
create(buildEntries(themes, 'themes', 'Main.ts'), 'tsconfig.theme.json', 'js/tinymce/themes', 'theme.js'),
create(buildEntries(models, 'models', 'Main.ts'), 'tsconfig.model.json', 'js/tinymce/models', 'model.js')
create({
'scratch/demos/core/demo.js': 'src/core/demo/ts/demo/Demos.ts',
'scratch/demos/core/cspdemo.js': 'src/core/demo/ts/demo/ContentSecurityPolicyDemo.ts',
...buildDemoEntries(plugins, 'plugins', 'Demo.ts', 'scratch/demos/'),
...buildEntries(plugins, 'plugins', 'Main.ts', 'js/tinymce/'),
...buildDemoEntries(models, 'models', 'Demo.ts', 'scratch/demos/'),
...buildEntries(models, 'models', 'Main.ts', 'js/tinymce/'),
...buildDemoEntries(themes, 'themes', 'Demos.ts', 'scratch/demos/'),
...buildEntries(themes, 'themes', 'Main.ts', 'js/tinymce/'),
}, '../../tsconfig.demo.json'),
// Note: This can't use the demo tsconfig as it is the core package
create({
'js/tinymce/tinymce.js': 'src/core/main/ts/api/Main.ts'
}, '../../tsconfig.json')
];
};
let generateDemoIndex = (grunt, app, plugins, themes, models) => {
let demoList = grunt.file.expand(['src/**/demo/html/*.html', 'src/**/demo/html/**/*.html']);
let sortedDemos = demoList.reduce((acc, link) => {
const generateDemoIndex = (grunt, app, plugins, themes, models) => {
const demoList = grunt.file.expand(['src/**/demo/html/*.html', 'src/**/demo/html/**/*.html']);
const sortedDemos = demoList.reduce((acc, link) => {
const type = link.split('/')[1];
if (!acc[type]) {
@ -150,16 +171,16 @@ let generateDemoIndex = (grunt, app, plugins, themes, models) => {
return acc;
}, {});
let lists = Object.keys(sortedDemos).map(
const lists = Object.keys(sortedDemos).map(
type => `
<h2>${type}</h2>
<ul>
${sortedDemos[type].map(
link => `<li>${type !== 'core' ? `<strong>${link.split('/')[2]}</strong> - ` : ''}<a href="${link}">${path.basename(link)}</a></li>`).join('')
}
link => `<li>${type !== 'core' ? `<strong>${link.split('/')[2]}</strong> - ` : ''}<a href="${link}">${path.basename(link)}</a></li>`).join('')
}
</ul>`
).join('');
let html = `
const html = `
<!DOCTYPE html>
<html lang="en">
<head>
@ -178,13 +199,6 @@ let generateDemoIndex = (grunt, app, plugins, themes, models) => {
};
module.exports = {
createPlugin,
createTheme,
createModel,
create,
all,
allPluginDemos,
allThemeDemos,
allModelDemos,
generateDemoIndex
};

View File

@ -1,10 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"paths": {
"tinymce": ["src/core/dist/tinymce"],
"tinymce/core/*": ["lib/globals/tinymce/core/*"],
"tinymce/models/dom/*": ["src/models/dom/main/ts/*"]
}
}
}

View File

@ -1,41 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"paths": {
"tinymce": ["src/core/dist/tinymce"],
"tinymce/core/*": ["lib/globals/tinymce/core/*"],
"tinymce/plugins/advlist/*": ["src/plugins/advlist/main/ts/*"],
"tinymce/plugins/anchor/*": ["src/plugins/anchor/main/ts/*"],
"tinymce/plugins/autolink/*": ["src/plugins/autolink/main/ts/*"],
"tinymce/plugins/autoresize/*": ["src/plugins/autoresize/main/ts/*"],
"tinymce/plugins/autosave/*": ["src/plugins/autosave/main/ts/*"],
"tinymce/plugins/charmap/*": ["src/plugins/charmap/main/ts/*"],
"tinymce/plugins/code/*": ["src/plugins/code/main/ts/*"],
"tinymce/plugins/codesample/*": ["src/plugins/codesample/main/ts/*"],
"tinymce/plugins/colorpicker/*": ["src/plugins/colorpicker/main/ts/*"],
"tinymce/plugins/contextmenu/*": ["src/plugins/contextmenu/main/ts/*"],
"tinymce/plugins/directionality/*": ["src/plugins/directionality/main/ts/*"],
"tinymce/plugins/emoticons/*": ["src/plugins/emoticons/main/ts/*"],
"tinymce/plugins/fullscreen/*": ["src/plugins/fullscreen/main/ts/*"],
"tinymce/plugins/help/*": ["src/plugins/help/main/ts/*"],
"tinymce/plugins/image/*": ["src/plugins/image/main/ts/*"],
"tinymce/plugins/importcss/*": ["src/plugins/importcss/main/ts/*"],
"tinymce/plugins/insertdatetime/*": ["src/plugins/insertdatetime/main/ts/*"],
"tinymce/plugins/link/*": ["src/plugins/link/main/ts/*"],
"tinymce/plugins/lists/*": ["src/plugins/lists/main/ts/*"],
"tinymce/plugins/media/*": ["src/plugins/media/main/ts/*"],
"tinymce/plugins/nonbreaking/*": ["src/plugins/nonbreaking/main/ts/*"],
"tinymce/plugins/pagebreak/*": ["src/plugins/pagebreak/main/ts/*"],
"tinymce/plugins/preview/*": ["src/plugins/preview/main/ts/*"],
"tinymce/plugins/quickbars/*": ["src/plugins/quickbars/main/ts/*"],
"tinymce/plugins/save/*": ["src/plugins/save/main/ts/*"],
"tinymce/plugins/searchreplace/*": ["src/plugins/searchreplace/main/ts/*"],
"tinymce/plugins/table/*": ["src/plugins/table/main/ts/*"],
"tinymce/plugins/template/*": ["src/plugins/template/main/ts/*"],
"tinymce/plugins/textcolor/*": ["src/plugins/textcolor/main/ts/*"],
"tinymce/plugins/visualblocks/*": ["src/plugins/visualblocks/main/ts/*"],
"tinymce/plugins/visualchars/*": ["src/plugins/visualchars/main/ts/*"],
"tinymce/plugins/wordcount/*": ["src/plugins/wordcount/main/ts/*"]
}
}
}

View File

@ -1,11 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"paths": {
"tinymce": ["src/core/dist/tinymce"],
"tinymce/core/*": ["lib/globals/tinymce/core/*"],
"tinymce/themes/silver/resources/*": ["src/themes/silver/main/resources/*"],
"tinymce/themes/silver/*": ["src/themes/silver/main/ts/*"]
}
}
}

View File

@ -17,7 +17,7 @@
"tsc": "tsc -b",
"watch": "tsc -b -w",
"eslint": "lerna exec --stream --no-bail -- eslint --max-warnings=0 src/**/*.ts",
"start": "run-p watch \"tinymce-grunt start\"",
"start": "yarn -s tinymce-grunt start",
"dev": "npm-run-all oxide-icons-build oxide-build -p tsc \"tinymce-grunt dev\"",
"ci": "npm-run-all -p oxide-ci oxide-icons-ci -p tsc \"tinymce-grunt dev\"",
"ci-all": "npm-run-all -p eslint ci -s tinymce-rollup",
@ -34,8 +34,8 @@
"test-one": "yarn tsc && yarn bedrock-auto -b chrome-headless -f"
},
"devDependencies": {
"@ephox/bedrock-client": "^11.3.2",
"@ephox/bedrock-server": "^11.5.0",
"@ephox/bedrock-client": "^13.0.0",
"@ephox/bedrock-server": "^13.1.0",
"@ephox/oxide-icons-tools": "^2.2.2",
"@ephox/swag": "^4.5.0",
"@tinymce/eslint-plugin": "^2.0.1",
@ -43,7 +43,6 @@
"@types/chai": "^4.2.15",
"@types/dompurify": "^2.3.3",
"@types/prismjs": "^1.16.6",
"awesome-typescript-loader": "^5.2.0",
"chai": "^4.3.3",
"chalk": "^4.1.0",
"emojilib": "^2.4.0",
@ -51,6 +50,7 @@
"eslint-plugin-notice": "^0.9.10",
"eslint-plugin-only-warn": "^1.0.3",
"fast-check": "^2.23.0",
"fork-ts-checker-webpack-plugin": "^7.2.6",
"grunt": "^1.0.2",
"grunt-contrib-clean": "^2.0.0",
"grunt-contrib-concat": "^2.0.0",
@ -62,7 +62,7 @@
"grunt-nuget-pack": "^0.0.6",
"grunt-shell": "^3.0.1",
"grunt-terser": "^2.0.0",
"grunt-webpack": "^4.0.2",
"grunt-webpack": "^5.0.0",
"gulp": "^4.0.0",
"gulp-clean": "^0.4.0",
"gulp-clean-css": "^4.0.0",
@ -77,24 +77,22 @@
"moxie-zip": "0.0.4",
"npm-run-all": "^4.1.5",
"patch-package": "^6.4.7",
"raw-loader": "^4.0.2",
"resolve": "^1.18.1",
"rollup": "^2.70.0",
"rollup-plugin-string": "^3.0.0",
"source-map-loader": "^1.1.0",
"string-replace-loader": "^2.1.1",
"source-map-loader": "^3.0.0",
"string-replace-loader": "^3.0.3",
"stylelint": "^13.2.1",
"stylelint-config-standard": "^20.0.0",
"stylelint-order": "^5.0.0",
"terser": "^5.12.0",
"ts-loader": "^6.2.2",
"ts-loader": "^9.2.6",
"tsconfig-paths-webpack-plugin": "^3.2.0",
"tslib": "^2.0.0",
"twemoji": "^13.0.1",
"typescript": "^4.6.2",
"webpack": "^4.41.2",
"webpack-cli": "^3.3.10",
"webpack-dev-server": "^3.9.0",
"webpack-livereload-plugin": "^2.1.1"
"webpack": "^5.64.1",
"webpack-cli": "^4.9.1",
"webpack-dev-server": "^4.7.4"
}
}

View File

@ -1,13 +0,0 @@
diff --git a/node_modules/@ephox/bedrock-server/lib/main/ts/bedrock/compiler/Webpack.js b/node_modules/@ephox/bedrock-server/lib/main/ts/bedrock/compiler/Webpack.js
index 0a33f63..c3c6926 100644
--- a/node_modules/@ephox/bedrock-server/lib/main/ts/bedrock/compiler/Webpack.js
+++ b/node_modules/@ephox/bedrock-server/lib/main/ts/bedrock/compiler/Webpack.js
@@ -38,7 +38,7 @@ const webpackSharedRules = webpackRemap.concat([
enforce: 'pre'
},
{
- test: /\.(html|htm|css|bower|hex|rtf|xml|yml)$/,
+ test: /\.(html|htm|css|bower|hex|rtf|xml|yml|svg)$/i,
use: ['raw-loader']
}
]);

114
tsconfig.demo.json Normal file
View File

@ -0,0 +1,114 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"paths": {
// duplicate paths, copied from tsconfig.json
// the exception is the tinymce core paths which point to the lib directories
// once there is a webpack path plugin that supports project references most of this can be deleted
"tinymce": ["modules/tinymce/lib/core/main/ts/api/Main"],
"tinymce/core/*": ["modules/tinymce/lib/globals/tinymce/core/*"],
"tinymce/themes/silver/resources/*": ["modules/tinymce/src/themes/silver/main/resources/*"],
"tinymce/themes/silver/demo/*": ["modules/tinymce/src/themes/silver/demo/ts/*"],
"tinymce/themes/silver/*": ["modules/tinymce/src/themes/silver/main/ts/*"],
"tinymce/models/dom/demo/*": ["modules/tinymce/src/models/dom/demo/ts/*"],
"tinymce/models/dom/*": ["modules/tinymce/src/models/dom/main/ts/*"],
"tinymce/plugins/advlist/*": ["modules/tinymce/src/plugins/advlist/main/ts/*"],
"tinymce/plugins/anchor/*": ["modules/tinymce/src/plugins/anchor/main/ts/*"],
"tinymce/plugins/autolink/*": ["modules/tinymce/src/plugins/autolink/main/ts/*"],
"tinymce/plugins/autoresize/*": ["modules/tinymce/src/plugins/autoresize/main/ts/*"],
"tinymce/plugins/autosave/*": ["modules/tinymce/src/plugins/autosave/main/ts/*"],
"tinymce/plugins/charmap/*": ["modules/tinymce/src/plugins/charmap/main/ts/*"],
"tinymce/plugins/code/*": ["modules/tinymce/src/plugins/code/main/ts/*"],
"tinymce/plugins/codesample/*": ["modules/tinymce/src/plugins/codesample/main/ts/*"],
"tinymce/plugins/directionality/*": ["modules/tinymce/src/plugins/directionality/main/ts/*"],
"tinymce/plugins/emoticons/*": ["modules/tinymce/src/plugins/emoticons/main/ts/*"],
"tinymce/plugins/fullscreen/*": ["modules/tinymce/src/plugins/fullscreen/main/ts/*"],
"tinymce/plugins/help/*": ["modules/tinymce/src/plugins/help/main/ts/*"],
"tinymce/plugins/hr/*": ["modules/tinymce/src/plugins/hr/main/ts/*"],
"tinymce/plugins/image/*": ["modules/tinymce/src/plugins/image/main/ts/*"],
"tinymce/plugins/importcss/*": ["modules/tinymce/src/plugins/importcss/main/ts/*"],
"tinymce/plugins/insertdatetime/*": ["modules/tinymce/src/plugins/insertdatetime/main/ts/*"],
"tinymce/plugins/link/*": ["modules/tinymce/src/plugins/link/main/ts/*"],
"tinymce/plugins/lists/*": ["modules/tinymce/src/plugins/lists/main/ts/*"],
"tinymce/plugins/media/*": ["modules/tinymce/src/plugins/media/main/ts/*"],
"tinymce/plugins/nonbreaking/*": ["modules/tinymce/src/plugins/nonbreaking/main/ts/*"],
"tinymce/plugins/pagebreak/*": ["modules/tinymce/src/plugins/pagebreak/main/ts/*"],
"tinymce/plugins/preview/*": ["modules/tinymce/src/plugins/preview/main/ts/*"],
"tinymce/plugins/print/*": ["modules/tinymce/src/plugins/print/main/ts/*"],
"tinymce/plugins/quickbars/*": ["modules/tinymce/src/plugins/quickbars/main/ts/*"],
"tinymce/plugins/save/*": ["modules/tinymce/src/plugins/save/main/ts/*"],
"tinymce/plugins/searchreplace/*": ["modules/tinymce/src/plugins/searchreplace/main/ts/*"],
"tinymce/plugins/table/*": ["modules/tinymce/src/plugins/table/main/ts/*"],
"tinymce/plugins/template/*": ["modules/tinymce/src/plugins/template/main/ts/*"],
"tinymce/plugins/visualblocks/*": ["modules/tinymce/src/plugins/visualblocks/main/ts/*"],
"tinymce/plugins/visualchars/*": ["modules/tinymce/src/plugins/visualchars/main/ts/*"],
"tinymce/plugins/wordcount/*": ["modules/tinymce/src/plugins/wordcount/main/ts/*"],
"@ephox/wrap-mcagar": ["modules/tinymce/src/core/test/ts/module/McAgar"],
"@ephox/oxide-icons-default": ["modules/oxide-icons-default/dist/js/Main.d.js"],
"ephox/acid/test/*": ["modules/acid/src/test/ts/module/ephox/acid/test/*"],
"ephox/acid/demo/*": ["modules/acid/src/demo/ts/ephox/acid/demo/*"],
"ephox/acid/*": ["modules/acid/src/main/ts/ephox/acid/*"],
"ephox/agar/test/*": ["modules/agar/src/test/ts/module/ephox/agar/test/*"],
"ephox/agar/demo/*": ["modules/agar/src/demo/ts/ephox/agar/demo/*"],
"ephox/agar/*": ["modules/agar/src/main/ts/ephox/agar/*"],
"ephox/alloy/test/*": ["modules/alloy/src/test/ts/module/ephox/alloy/test/*"],
"ephox/alloy/demo/*": ["modules/alloy/src/demo/ts/ephox/alloy/demo/*"],
"ephox/alloy/*": ["modules/alloy/src/main/ts/ephox/alloy/*"],
"ephox/boss/test/*": ["modules/boss/src/test/ts/module/ephox/boss/test/*"],
"ephox/boss/demo/*": ["modules/boss/src/demo/ts/ephox/boss/demo/*"],
"ephox/boss/*": ["modules/boss/src/main/ts/ephox/boss/*"],
"ephox/boulder/test/*": ["modules/boulder/src/test/ts/module/ephox/boulder/test/*"],
"ephox/boulder/demo/*": ["modules/boulder/src/demo/ts/ephox/boulder/demo/*"],
"ephox/boulder/*": ["modules/boulder/src/main/ts/ephox/boulder/*"],
"ephox/bridge/test/*": ["modules/bridge/src/test/ts/module/ephox/bridge/test/*"],
"ephox/bridge/demo/*": ["modules/bridge/src/demo/ts/ephox/bridge/demo/*"],
"ephox/bridge/*": ["modules/bridge/src/main/ts/ephox/bridge/*"],
"ephox/darwin/test/*": ["modules/darwin/src/test/ts/module/ephox/darwin/test/*"],
"ephox/darwin/demo/*": ["modules/darwin/src/demo/ts/ephox/darwin/demo/*"],
"ephox/darwin/*": ["modules/darwin/src/main/ts/ephox/darwin/*"],
"ephox/dragster/test/*": ["modules/dragster/src/test/ts/module/ephox/dragster/test/*"],
"ephox/dragster/demo/*": ["modules/dragster/src/demo/ts/ephox/dragster/demo/*"],
"ephox/dragster/*": ["modules/dragster/src/main/ts/ephox/dragster/*"],
"ephox/jax/test/*": ["modules/jax/src/test/ts/module/ephox/jax/test/*"],
"ephox/jax/demo/*": ["modules/jax/src/demo/ts/ephox/jax/demo/*"],
"ephox/jax/*": ["modules/jax/src/main/ts/ephox/jax/*"],
"ephox/katamari/test/*": ["modules/katamari/src/test/ts/module/ephox/katamari/test/*"],
"ephox/katamari/demo/*": ["modules/katamari/src/demo/ts/ephox/katamari/demo/*"],
"ephox/katamari/*": ["modules/katamari/src/main/ts/ephox/katamari/*"],
"ephox/katamari-assertions/test/*": ["modules/katamari-assertions/src/test/ts/module/ephox/katamari-assertions/test/*"],
"ephox/katamari-assertions/demo/*": ["modules/katamari-assertions/src/demo/ts/ephox/katamari-assertions/demo/*"],
"ephox/katamari-assertions/*": ["modules/katamari-assertions/src/main/ts/ephox/katamari-assertions/*"],
"ephox/mcagar/test/*": ["modules/mcagar/src/test/ts/module/ephox/mcagar/test/*"],
"ephox/mcagar/demo/*": ["modules/mcagar/src/demo/ts/ephox/mcagar/demo/*"],
"ephox/mcagar/*": ["modules/mcagar/src/main/ts/ephox/mcagar/*"],
"ephox/phoenix/test/*": ["modules/phoenix/src/test/ts/module/ephox/phoenix/test/*"],
"ephox/phoenix/demo/*": ["modules/phoenix/src/demo/ts/ephox/phoenix/demo/*"],
"ephox/phoenix/*": ["modules/phoenix/src/main/ts/ephox/phoenix/*"],
"ephox/polaris/test/*": ["modules/polaris/src/test/ts/module/ephox/polaris/test/*"],
"ephox/polaris/demo/*": ["modules/polaris/src/demo/ts/ephox/polaris/demo/*"],
"ephox/polaris/*": ["modules/polaris/src/main/ts/ephox/polaris/*"],
"ephox/porkbun/test/*": ["modules/porkbun/src/test/ts/module/ephox/porkbun/test/*"],
"ephox/porkbun/demo/*": ["modules/porkbun/src/demo/ts/ephox/porkbun/demo/*"],
"ephox/porkbun/*": ["modules/porkbun/src/main/ts/ephox/porkbun/*"],
"ephox/robin/test/*": ["modules/robin/src/test/ts/module/ephox/robin/test/*"],
"ephox/robin/demo/*": ["modules/robin/src/demo/ts/ephox/robin/demo/*"],
"ephox/robin/*": ["modules/robin/src/main/ts/ephox/robin/*"],
"ephox/sand/test/*": ["modules/sand/src/test/ts/module/ephox/sand/test/*"],
"ephox/sand/demo/*": ["modules/sand/src/demo/ts/ephox/sand/demo/*"],
"ephox/sand/*": ["modules/sand/src/main/ts/ephox/sand/*"],
"ephox/snooker/test/*": ["modules/snooker/src/test/ts/module/ephox/snooker/test/*"],
"ephox/snooker/demo/*": ["modules/snooker/src/demo/ts/ephox/snooker/demo/*"],
"ephox/snooker/*": ["modules/snooker/src/main/ts/ephox/snooker/*"],
"ephox/sugar/test/*": ["modules/sugar/src/test/ts/module/ephox/sugar/test/*"],
"ephox/sugar/demo/*": ["modules/sugar/src/demo/ts/ephox/sugar/demo/*"],
"ephox/sugar/*": ["modules/sugar/src/main/ts/ephox/sugar/*"],
"ephox/tinymce/test/*": ["modules/tinymce/src/test/ts/module/ephox/tinymce/test/*"],
"ephox/tinymce/demo/*": ["modules/tinymce/src/demo/ts/ephox/tinymce/demo/*"],
"ephox/tinymce/*": ["modules/tinymce/src/main/ts/ephox/tinymce/*"],
}
}
}

View File

@ -1,7 +1,7 @@
{
"extends": "./tsconfig.shared.json",
// Until the webpack type checker supports project references properly, this means that bedrock tests will compile _nothing_.
// Compile nothing here but instead let it be compiled by the project references
"files": [],
"references": [
{ "path": "modules/acid" },
@ -44,8 +44,6 @@
"tinymce/plugins/charmap/*": ["modules/tinymce/src/plugins/charmap/main/ts/*"],
"tinymce/plugins/code/*": ["modules/tinymce/src/plugins/code/main/ts/*"],
"tinymce/plugins/codesample/*": ["modules/tinymce/src/plugins/codesample/main/ts/*"],
"tinymce/plugins/colorpicker/*": ["modules/tinymce/src/plugins/colorpicker/main/ts/*"],
"tinymce/plugins/contextmenu/*": ["modules/tinymce/src/plugins/contextmenu/main/ts/*"],
"tinymce/plugins/directionality/*": ["modules/tinymce/src/plugins/directionality/main/ts/*"],
"tinymce/plugins/emoticons/*": ["modules/tinymce/src/plugins/emoticons/main/ts/*"],
"tinymce/plugins/fullscreen/*": ["modules/tinymce/src/plugins/fullscreen/main/ts/*"],
@ -65,7 +63,6 @@
"tinymce/plugins/searchreplace/*": ["modules/tinymce/src/plugins/searchreplace/main/ts/*"],
"tinymce/plugins/table/*": ["modules/tinymce/src/plugins/table/main/ts/*"],
"tinymce/plugins/template/*": ["modules/tinymce/src/plugins/template/main/ts/*"],
"tinymce/plugins/textcolor/*": ["modules/tinymce/src/plugins/textcolor/main/ts/*"],
"tinymce/plugins/visualblocks/*": ["modules/tinymce/src/plugins/visualblocks/main/ts/*"],
"tinymce/plugins/visualchars/*": ["modules/tinymce/src/plugins/visualchars/main/ts/*"],
"tinymce/plugins/wordcount/*": ["modules/tinymce/src/plugins/wordcount/main/ts/*"],

4795
yarn.lock

File diff suppressed because it is too large Load Diff