lincd-cli 0.1.1 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +24 -13
  2. package/defaults/defaultModule/Index.js +30 -30
  3. package/defaults/defaultModule/Index.tsx +24 -24
  4. package/defaults/defaultModule/index.ts +1 -1
  5. package/defaults/defaultModule/ontology.js +21 -21
  6. package/defaults/defaultModule/ontology.ts +1 -1
  7. package/defaults/index.ts +1 -1
  8. package/defaults/module/Gruntfile.js +16 -0
  9. package/defaults/module/package.json +30 -0
  10. package/defaults/module/src/components/ExampleComponent.tsx +22 -0
  11. package/defaults/module/src/data/example-ontology.json +20 -0
  12. package/defaults/module/src/data/example-ontology.json.d.ts +1 -0
  13. package/defaults/module/src/index.ts +7 -0
  14. package/defaults/module/src/module.ts +9 -0
  15. package/defaults/module/src/ontologies/example-ontology.ts +33 -0
  16. package/defaults/module/src/shapes/ExampleShapeClass.ts +30 -0
  17. package/defaults/module/tsconfig-es5.json +21 -0
  18. package/defaults/module/tsconfig.json +21 -0
  19. package/defaults/ontology.ts +1 -1
  20. package/defaults/package.json +28 -24
  21. package/defaults/site/.gitignore +8 -0
  22. package/defaults/site/.npmignore +10 -0
  23. package/defaults/site/lib/start-server.js +22 -0
  24. package/defaults/site/lib/test-server.js +10 -0
  25. package/defaults/site/package.json +40 -0
  26. package/defaults/site/storage/filestores/settings-development.jsonld +117 -0
  27. package/defaults/site/storage/filestores/settings-production-template.jsonld +129 -0
  28. package/defaults/site/web/.htaccess +19 -0
  29. package/defaults/site/web/favicon.png +0 -0
  30. package/defaults/site/web/img/placeholder.jpg +0 -0
  31. package/defaults/tsconfig-es5.json +18 -19
  32. package/defaults/tsconfig.json +20 -21
  33. package/lib/cli.js +1116 -0
  34. package/lib/config-grunt.js +254 -0
  35. package/lib/config-webpack.js +267 -0
  36. package/{index.js → lib/index.js} +8 -4
  37. package/lib/interfaces.js +2 -0
  38. package/{plugins → lib/plugins}/declaration-plugin.js +3 -3
  39. package/lib/plugins/externalise-modules.js +181 -0
  40. package/lib/plugins/watch-run.js +47 -0
  41. package/lib/utils.js +127 -0
  42. package/package.json +73 -68
  43. package/{cli.js → src/cli.js} +1209 -1238
  44. package/src/config-grunt.js +263 -0
  45. package/src/config-webpack.js +281 -0
  46. package/src/index.js +22 -0
  47. package/src/interfaces.js +2 -0
  48. package/src/plugins/declaration-plugin.js +248 -0
  49. package/{plugins → src/plugins}/externalise-modules.js +161 -159
  50. package/src/plugins/shapes-plugin.js +69 -0
  51. package/{plugins → src/plugins}/watch-run.js +47 -47
  52. package/src/utils.js +127 -0
  53. package/config-generator.js +0 -531
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ /// <reference path="colors.d.ts" />
4
+ var colors = require("colors");
5
+ var included = [];
6
+ var exportRoot = '/lib';
7
+ var libraryName = 'lincd';
8
+ var lincdModules = new Map();
9
+ //This function determines which modules that are requested by the module being built are external
10
+ //it basically turns every import from @dacore/[something] request into a lookup for that class/object in the global daCore object (which BrowserCore maintains when modules register themselves)
11
+ //See also: https://webpack.js.org/configuration/externals/
12
+ var externaliseModules = function (config, es5) {
13
+ function debug() {
14
+ var msgs = [];
15
+ for (var _i = 0; _i < arguments.length; _i++) {
16
+ msgs[_i] = arguments[_i];
17
+ }
18
+ msgs.unshift('externals: ');
19
+ if (config && config.debug) {
20
+ console.log.apply(null, msgs);
21
+ }
22
+ }
23
+ function log() {
24
+ var msgs = [];
25
+ for (var _i = 0; _i < arguments.length; _i++) {
26
+ msgs[_i] = arguments[_i];
27
+ }
28
+ msgs.unshift('externals: ');
29
+ console.log.apply(null, msgs);
30
+ }
31
+ var externalKeys = config.externals
32
+ ? Object.keys(config.externals)
33
+ : [];
34
+ //return the function that is handed to webpack in the 'externals' option.
35
+ //it determines for each request what is external and what is not
36
+ return function (context, request, callback) {
37
+ if (config.externals && config.externals[request]) {
38
+ debug(colors.magenta('Excluding request as defined in Gruntfile: ' + request));
39
+ // return callback(config.externals[request]);
40
+ return callback(null, 'var ' + config.externals[request]);
41
+ }
42
+ //solution to a problem that turned out not to need a solution.
43
+ // But if sub requests of externalized modules go wrong at some point, use this!
44
+ /*let rootRequest = request.substring(0, request.indexOf('/'));
45
+ if (externalKeys.indexOf(rootRequest) !== -1) {
46
+ let key = rootRequest;
47
+ let rest = request.substring(key.length).replace(/\//g, '.');
48
+ // return callback(config.externals[request]);
49
+ debug(
50
+ colors.magenta(
51
+ 'Excluding sub request as defined in Gruntfile: ' +
52
+ request +
53
+ ' -> ' +
54
+ config.externals[key] +
55
+ rest,
56
+ ),
57
+ );
58
+ return callback(null, 'var ' + config.externals[request] + rest);
59
+ }*/
60
+ //log(colors.gray(request));
61
+ //"@dacore/core/foo" => "daCore.core.foo"
62
+ // if (/^\@dacore\//.test(request)) {
63
+ //remove @dacore/
64
+ // if (request.indexOf('@dacore') !== 0) {
65
+ // console.warn(
66
+ // colors.red('this plugin currently works with @dacore modules only'),
67
+ // );
68
+ // return;
69
+ // }
70
+ // debug(colors.green('request: ' + request));
71
+ if (request.substr(0, 1) == '.' || request.substr(0, 1) == '/') {
72
+ // debug('skipping local');
73
+ callback();
74
+ return;
75
+ }
76
+ if (request.indexOf('lincd/') === 0 && es5) {
77
+ // var result = request.replace("@dacore/core/","@dacore/core-es5/");
78
+ // debug('Requested ES6 for ES5 target: '+colors.yellow(request) + ' => ' + colors.cyan(result));
79
+ debug('Requested ES6 for ES5 target: ' + colors.yellow(request));
80
+ // return callback(null, 'commonjs '+result);
81
+ }
82
+ //get module name without @dacore
83
+ // var transformed = request.substr(8);
84
+ //find @scope and the next part between 2 slashes after
85
+ //so @dacore/some-mod/lib/file.js
86
+ // --> match[0] = @dacore/some-mod
87
+ // --> match[1] = @dacore
88
+ // --> match[2] = some-mod
89
+ var _a = request.match(/(@[\w\-]+\/)?([\w\-]+)/), packageName = _a[0], scope = _a[1], cleanPackageName = _a[2];
90
+ //if this module is listed as internal module in the config (or if we internalize all modules with '*')
91
+ if (config &&
92
+ config.internals &&
93
+ (config.internals.indexOf(packageName) !== -1 || config.internals === '*')) {
94
+ //then don't exclude and don't continue this function
95
+ //only log once
96
+ if (included.indexOf(packageName) !== -1) {
97
+ included.push(packageName);
98
+ }
99
+ debug(colors.blue('marked internal & will be included: ' + request));
100
+ return callback();
101
+ }
102
+ //check if this module is a lincd module
103
+ var isLincd = isLincdModule(debug, packageName);
104
+ if (isLincd) {
105
+ debug(colors.magenta(packageName +
106
+ ' is a lincd module, imports will be excluded from this bundle and refer to a global variable instead'));
107
+ }
108
+ else {
109
+ debug(packageName.name +
110
+ ' is NOT a linked module, it will be included in the bundle');
111
+ return callback();
112
+ }
113
+ //remove export root path (for example with @dacore/core/lib/models: the core module has lib/ as root, so to get to the exported path dacore.core.UriResource we need to remove it)
114
+ //TODO: read this from package.json
115
+ var cleanRequest = request.replace(exportRoot, '');
116
+ var targetVariable;
117
+ //expects a flat export / global tree with all the modules classes
118
+ //replace - by _ and remove es5, because both es6 and es5 modules will be listed under the bare module name in the global treemap
119
+ var firstSlash = cleanRequest.indexOf('/');
120
+ //if importing {x} from "lincd" (so directly from library without any paths)
121
+ if (firstSlash === -1 && cleanRequest == libraryName) {
122
+ //then we refer straight to the global object
123
+ targetVariable = libraryName;
124
+ }
125
+ else {
126
+ //for all other cases, there is slash, so lets split module before the first slash and classname after the last slash
127
+ // let module = cleanRequest
128
+ // .substr(0, firstSlash)
129
+ // .replace(/-/g, '_')
130
+ // .replace('_es5', '');
131
+ if (packageName == libraryName) {
132
+ //the library itself should directly expose the main class of each file for clean variable names
133
+ targetVariable = libraryName;
134
+ //targetVariable = libraryName + '.' + className;
135
+ }
136
+ else {
137
+ //reading this back I'm not sure why module would be empty?
138
+ //Note: we don't include className here anymore, since all linked Components/Utils register themselves as libraryName._modules.moduleName.ComponentName
139
+ //and we don't do default exports, so the import would be `import {ComponentName} from 'foo'` OR `import {ComponentName} from 'foo/lib/components/ComponentName'`
140
+ //Typescript then translates `ComponentName` to `ComponentName_1.ComponentName` in the javascript output
141
+ //And when we build the tree, we put each individual exports of linked components directly under `lincd._modules.moduleName`
142
+ //so here we return the entire module as the result of such imports
143
+ //and ComponentName_1 will contain all things linked/exported by the module
144
+ //and ComponentName_1.ComponentName resolves to the desired class/function
145
+ targetVariable =
146
+ libraryName + "._modules['" + packageName.replace(/\-/g, '_') + "']";
147
+ //import {PersonView} from 'lincd-test/lib/PersonView';
148
+ //lincd._modules.lincd_test
149
+ //PersonView_1
150
+ //PersonView_1.PersonView --> lincd._modules.lincd_test.PersonView
151
+ // targetVariable =
152
+ // libraryName +
153
+ // '.' +
154
+ // (module ? '_modules.' + module + '.' : '') +
155
+ // className;
156
+ }
157
+ }
158
+ debug(colors.yellow(request) + ' => ' + colors.cyan(targetVariable));
159
+ //See also: https://webpack.js.org/configuration/externals/
160
+ return callback(null, 'var ' + targetVariable);
161
+ // }
162
+ };
163
+ };
164
+ function isLincdModule(debug, packageName) {
165
+ if (!lincdModules.has(packageName)) {
166
+ // debug(colors.green('checking ' + moduleName + '/package.json'));
167
+ var isLincdModule_1;
168
+ var modulePackage = void 0;
169
+ try {
170
+ modulePackage = require(packageName + '/package.json');
171
+ }
172
+ catch (e) {
173
+ debug(colors.red(packageName + '/package.json' + ' does not exist'));
174
+ // return callback();
175
+ }
176
+ isLincdModule_1 = modulePackage && modulePackage.lincd && true;
177
+ lincdModules.set(packageName, isLincdModule_1);
178
+ }
179
+ return lincdModules.get(packageName);
180
+ }
181
+ exports["default"] = externaliseModules;
@@ -0,0 +1,47 @@
1
+ // WebpackWatchRunPlugin.js
2
+ /*
3
+ * This simple webpack plugin helps to identify the list of file changes, that
4
+ * triggered webpack re-compilation/re-build
5
+ */
6
+ 'use strict';
7
+ exports.__esModule = true;
8
+ var WatchRunPlugin = /** @class */ (function () {
9
+ function WatchRunPlugin() {
10
+ }
11
+ WatchRunPlugin.prototype.apply = function (compiler) {
12
+ compiler.hooks.watchRun.tap('WatchRun', function (comp) {
13
+ var changedTimes = comp.watchFileSystem.watcher.mtimes;
14
+ var changedFiles = Object.keys(changedTimes)
15
+ .map(function (file) { return "\n " + file; })
16
+ .join('');
17
+ if (changedFiles.length) {
18
+ console.log('====================================');
19
+ console.log('NEW BUILD FILES CHANGED:', changedFiles);
20
+ console.log('====================================');
21
+ }
22
+ });
23
+ };
24
+ return WatchRunPlugin;
25
+ }());
26
+ /*class WebpackWatchRunPlugin {
27
+ constructor(options?) {
28
+ if (typeof options !== "object") options = {};
29
+ this['options'] = options;
30
+ }
31
+
32
+ apply(compiler) {
33
+ const options = this['options'];
34
+ compiler.plugin("watch-run",
35
+ function (watching, done) {
36
+ const changedTimes = watching.compiler.watchFileSystem.watcher.mtimes;
37
+ const changedFiles = Object.keys(changedTimes)
38
+ .map(file => `\n ${file}`)
39
+ .join("");
40
+ if (changedFiles.length) {
41
+ console.log("Files modified:", changedFiles);
42
+ }
43
+ done();
44
+ });
45
+ }
46
+ }*/
47
+ exports["default"] = WatchRunPlugin;
package/lib/utils.js ADDED
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ exports.__esModule = true;
25
+ exports.flatten = exports.warn = exports.debug = exports.log = exports.generateScopedName = exports.getShapes = exports.getShapesJSONLD = exports.getPackageJSON = void 0;
26
+ var fs = __importStar(require("fs"));
27
+ var path = __importStar(require("path"));
28
+ var SHACL_1 = require("lincd/lib/shapes/SHACL");
29
+ var CoreSet_1 = require("lincd/lib/collections/CoreSet");
30
+ var JSONLDWriter_1 = require("lincd-jsonld/lib/JSONLDWriter");
31
+ var chalk_1 = __importDefault(require("chalk"));
32
+ var getPackageJSON = function (root) {
33
+ if (root === void 0) { root = process.cwd(); }
34
+ var packagePath = path.join(root, 'package.json');
35
+ if (fs.existsSync(packagePath)) {
36
+ return JSON.parse(fs.readFileSync(packagePath, 'utf8'));
37
+ }
38
+ else if (root === process.cwd()) {
39
+ console.warn('Could not find package.json. Make sure you run this command from the root of a lincd module or a lincd yarn workspace');
40
+ process.exit();
41
+ }
42
+ };
43
+ exports.getPackageJSON = getPackageJSON;
44
+ function getShapesJSONLD(moduleExports) {
45
+ return JSONLDWriter_1.JSONLDWriter.stringify(getShapes(moduleExports));
46
+ }
47
+ exports.getShapesJSONLD = getShapesJSONLD;
48
+ function getShapes(moduleExports) {
49
+ var shapes = new CoreSet_1.CoreSet();
50
+ for (var key in moduleExports) {
51
+ var moduleExport = moduleExports[key];
52
+ // console.log(key, Object.keys(moduleExports[key]));
53
+ if (moduleExport.shape) {
54
+ // console.log(Object.keys(moduleExport.shape));
55
+ if (moduleExport.shape && moduleExport.shape instanceof SHACL_1.SHACL_Shape) {
56
+ shapes.add(moduleExport.shape);
57
+ }
58
+ }
59
+ }
60
+ return shapes;
61
+ }
62
+ exports.getShapes = getShapes;
63
+ function generateScopedName(name, filename, css) {
64
+ var path = require('path');
65
+ var file = path.basename(filename, '.scss');
66
+ var module = filename.match(/[\\\/]modules[\\\/]([\w\-_]+)/);
67
+ var moduleName;
68
+ if (module) {
69
+ moduleName = module[1];
70
+ }
71
+ else {
72
+ //if we cant find module name from path, we'll use a hash
73
+ //https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript
74
+ var hash = 0;
75
+ if (filename.length == 0) {
76
+ moduleName = '_unknown';
77
+ }
78
+ else {
79
+ for (var i = 0; i < filename.length; i++) {
80
+ var char = filename.charCodeAt(i);
81
+ hash = (hash << 5) - hash + char;
82
+ hash = hash & hash; // Convert to 32bit integer
83
+ }
84
+ moduleName = hash;
85
+ }
86
+ }
87
+ // console.log("Module name: "+moduleName);
88
+ // console.log("Returning: " + moduleName + "_" + file + "_" + name);
89
+ return moduleName + '_' + file + '_' + name;
90
+ }
91
+ exports.generateScopedName = generateScopedName;
92
+ function log() {
93
+ var messages = [];
94
+ for (var _i = 0; _i < arguments.length; _i++) {
95
+ messages[_i] = arguments[_i];
96
+ }
97
+ messages.forEach(function (message) {
98
+ console.log(chalk_1["default"].cyan(message));
99
+ });
100
+ }
101
+ exports.log = log;
102
+ function debug(config) {
103
+ var messages = [];
104
+ for (var _i = 1; _i < arguments.length; _i++) {
105
+ messages[_i - 1] = arguments[_i];
106
+ }
107
+ if (config.debug) {
108
+ log.apply(void 0, messages);
109
+ }
110
+ }
111
+ exports.debug = debug;
112
+ function warn() {
113
+ var messages = [];
114
+ for (var _i = 0; _i < arguments.length; _i++) {
115
+ messages[_i] = arguments[_i];
116
+ }
117
+ messages.forEach(function (message) {
118
+ console.log(chalk_1["default"].red(message));
119
+ });
120
+ }
121
+ exports.warn = warn;
122
+ function flatten(arr) {
123
+ return arr.reduce(function (a, b) {
124
+ return b ? a.concat(b) : a;
125
+ }, []);
126
+ }
127
+ exports.flatten = flatten;
package/package.json CHANGED
@@ -1,68 +1,73 @@
1
- {
2
- "name": "lincd-cli",
3
- "version": "0.1.1",
4
- "description": "Command line tools for the lincd.js library",
5
- "main": "index.js",
6
- "scripts": {
7
- "publish-build-tools": "tsc && npm version patch && npm publish",
8
- "build": "tsc"
9
- },
10
- "keywords": [
11
- "lincd",
12
- "cli",
13
- "build",
14
- "tools"
15
- ],
16
- "author": {
17
- "name": "René Verheij",
18
- "email": "rpwverheij@gmail.com"
19
- },
20
- "license": "MPL-2.0",
21
- "bin": {
22
- "lincd": "cli.js"
23
- },
24
- "dependencies": {
25
- "@lodder/grunt-postcss": "^3.0.0",
26
- "@types/node": "^14.14.13",
27
- "chalk": "4.1.0",
28
- "child-process-promise": "^2.2.1",
29
- "colors": "^1.4.0",
30
- "commander": "^6.2.0",
31
- "css-loader": "^5.0.1",
32
- "extract-text-webpack-plugin": "^4.0.0-beta.0",
33
- "fs-extra": "^9.0.1",
34
- "glob": "^7.1.6",
35
- "grunt": "^1.3.0",
36
- "grunt-concurrent": "^3.0.0",
37
- "grunt-contrib-clean": "^2.0.0",
38
- "grunt-exec": "^3.0.0",
39
- "grunt-ts": "^6.0.0-beta.17",
40
- "grunt-webpack": "^4.0.2",
41
- "lincd": "*",
42
- "lincd-cli": "*",
43
- "load-grunt-tasks": "^5.1.0",
44
- "mini-css-extract-plugin": "^1.3.3",
45
- "postcss": "^8.2.1",
46
- "postcss-cssnext": "^3.1.0",
47
- "postcss-import": "^13.0.0",
48
- "postcss-loader": "^4.1.0",
49
- "postcss-modules": "^4.2.2",
50
- "postcss-nested": "^5.0.3",
51
- "postcss-scss": "^3.0.4",
52
- "postcss-strip-inline-comments": "^0.1.5",
53
- "sass": "^1.3.0",
54
- "sass-loader": "10.1.0",
55
- "source-map-loader": "^1.1.3",
56
- "tailwindcss": "^2.0.2",
57
- "terser-webpack-plugin": "^4.0.0",
58
- "ts-loader": "^8.0.12",
59
- "tsconfig-paths-webpack-plugin": "^3.3.0",
60
- "typescript": "4.2.2",
61
- "webpack": "^4.0.0",
62
- "webpack-bundle-analyzer": "^3.0.0"
63
- },
64
- "devDependencies": {
65
- "optimize-css-assets-webpack-plugin": "^5.0.4"
66
- },
67
- "peerDepencencies": {}
68
- }
1
+ {
2
+ "name": "lincd-cli",
3
+ "version": "0.1.5",
4
+ "description": "Command line tools for the lincd.js library",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "prepublishOnly": "npm exec tsc",
8
+ "build": "npm exec tsc"
9
+ },
10
+ "lincd_util": true,
11
+ "keywords": [
12
+ "lincd",
13
+ "cli",
14
+ "build",
15
+ "tools"
16
+ ],
17
+ "author": {
18
+ "name": "René Verheij",
19
+ "email": "rpwverheij@gmail.com"
20
+ },
21
+ "license": "MPL-2.0",
22
+ "bin": {
23
+ "lincd": "lib/cli.js"
24
+ },
25
+ "dependencies": {
26
+ "@lodder/grunt-postcss": "^3.1.1",
27
+ "@types/node": "^14.14.13",
28
+ "chalk": "4.1.0",
29
+ "child-process-promise": "^2.2.1",
30
+ "colors": "^1.4.0",
31
+ "commander": "^6.2.0",
32
+ "css-loader": "^5.2.7",
33
+ "extract-text-webpack-plugin": "^4.0.0-beta.0",
34
+ "fs-extra": "^10.1.0",
35
+ "glob": "^7.1.6",
36
+ "grunt": "^1.3.0",
37
+ "grunt-concurrent": "^3.0.0",
38
+ "grunt-contrib-clean": "^2.0.0",
39
+ "grunt-contrib-copy": "^1.0.0",
40
+ "grunt-exec": "^3.0.0",
41
+ "grunt-ts": "^6.0.0-beta.17",
42
+ "grunt-webpack": "^4.0.2",
43
+ "license-info-webpack-plugin": "^3.0.0",
44
+ "lincd": "^0.2",
45
+ "lincd-jsonld": "^0.1.4",
46
+ "load-grunt-tasks": "^5.1.0",
47
+ "mini-css-extract-plugin": "^1.3.3",
48
+ "postcss": "^8.4.13",
49
+ "postcss-import": "^14.1.0",
50
+ "postcss-loader": "^4.3.0",
51
+ "postcss-modules": "^4.3.1",
52
+ "postcss-nested": "^5.0.6",
53
+ "postcss-scss": "^4.0.4",
54
+ "postcss-strip-inline-comments": "^0.1.5",
55
+ "require-extensions": "^0.0.4",
56
+ "sass": "^1.51.0",
57
+ "sass-loader": "^10.0",
58
+ "source-map-loader": "^1.1.3",
59
+ "tailwindcss": "^3.0.24",
60
+ "terser-webpack-plugin": "^4.0.0",
61
+ "ts-loader": "^8.0.12",
62
+ "tsc-hooks": "^1.1.1",
63
+ "tsconfig-paths-webpack-plugin": "^3.3.0",
64
+ "typescript": "4.2.2",
65
+ "webpack": "^4.0.0",
66
+ "webpack-bundle-analyzer": "^3.0.0",
67
+ "webpack-license-plugin": "^4.2.1"
68
+ },
69
+ "devDependencies": {
70
+ "optimize-css-assets-webpack-plugin": "^6.0.1"
71
+ },
72
+ "peerDepencencies": {}
73
+ }