openmrs 3.2.0 → 3.2.1-pre.1010
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.
- package/default-webpack-config.js +2 -165
- package/dist/cli.js +3 -3
- package/dist/utils/dependencies.js +1 -13
- package/dist/utils/importmap.js +3 -5
- package/package.json +8 -19
- package/src/cli.ts +3 -3
- package/src/utils/dependencies.ts +0 -20
- package/src/utils/importmap.ts +2 -18
|
@@ -1,166 +1,3 @@
|
|
|
1
|
-
const
|
|
2
|
-
const { resolve, dirname, basename } = require("path");
|
|
3
|
-
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
|
4
|
-
const { DefinePlugin, container } = require("webpack");
|
|
5
|
-
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
|
|
6
|
-
const { StatsWriterPlugin } = require("webpack-stats-plugin");
|
|
7
|
-
const { mergeWith, isArray } = require("lodash");
|
|
1
|
+
const { default: extendConfig, ...rest } = require("@openmrs/webpack-config");
|
|
8
2
|
|
|
9
|
-
|
|
10
|
-
const { ModuleFederationPlugin } = container;
|
|
11
|
-
|
|
12
|
-
function getFrameworkVersion() {
|
|
13
|
-
try {
|
|
14
|
-
const { version } = require("@openmrs/esm-framework/package.json");
|
|
15
|
-
return `^${version}`;
|
|
16
|
-
} catch {
|
|
17
|
-
return "3.x";
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function makeIdent(name) {
|
|
22
|
-
if (name.indexOf("/") !== -1) {
|
|
23
|
-
name = name.substr(name.indexOf("/"));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (name.endsWith("-app")) {
|
|
27
|
-
name = name.substr(0, name.length - 4);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return name;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const overrides = {};
|
|
34
|
-
const additionalConfig = {};
|
|
35
|
-
|
|
36
|
-
module.exports = (env, argv = {}) => {
|
|
37
|
-
const root = process.cwd();
|
|
38
|
-
const { name, peerDependencies, browser, main, types } = require(resolve(
|
|
39
|
-
root,
|
|
40
|
-
"package.json"
|
|
41
|
-
));
|
|
42
|
-
const mode = argv.mode || process.env.NODE_ENV || "development";
|
|
43
|
-
const filename = basename(browser || main);
|
|
44
|
-
const outDir = dirname(browser || main);
|
|
45
|
-
const srcFile = resolve(root, browser ? main : types);
|
|
46
|
-
const ident = makeIdent(name);
|
|
47
|
-
const frameworkVersion = getFrameworkVersion();
|
|
48
|
-
|
|
49
|
-
const cssLoader = {
|
|
50
|
-
loader: "css-loader",
|
|
51
|
-
options: {
|
|
52
|
-
modules: {
|
|
53
|
-
localIdentName: `${ident}__[name]__[local]___[hash:base64:5]`,
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const baseConfig = {
|
|
59
|
-
entry: {
|
|
60
|
-
[name]: "systemjs-webpack-interop/auto-public-path",
|
|
61
|
-
},
|
|
62
|
-
output: {
|
|
63
|
-
libraryTarget: "system",
|
|
64
|
-
publicPath: "",
|
|
65
|
-
path: resolve(root, outDir),
|
|
66
|
-
},
|
|
67
|
-
target: "web",
|
|
68
|
-
module: {
|
|
69
|
-
rules: [
|
|
70
|
-
{
|
|
71
|
-
test: /\.m?(js|ts|tsx)$/,
|
|
72
|
-
exclude: /(node_modules|bower_components)/,
|
|
73
|
-
use: {
|
|
74
|
-
loader: require.resolve("babel-loader"),
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
test: /\.css$/,
|
|
79
|
-
use: [require.resolve("style-loader"), cssLoader],
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
test: /\.s[ac]ss$/i,
|
|
83
|
-
use: [
|
|
84
|
-
require.resolve("style-loader"),
|
|
85
|
-
cssLoader,
|
|
86
|
-
{ loader: require.resolve("sass-loader") },
|
|
87
|
-
],
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
test: /\.(png|jpe?g|gif|svg)$/i,
|
|
91
|
-
type: "asset/resource",
|
|
92
|
-
},
|
|
93
|
-
],
|
|
94
|
-
},
|
|
95
|
-
mode,
|
|
96
|
-
devtool: mode === production ? "source-map" : "inline-source-map",
|
|
97
|
-
devServer: {
|
|
98
|
-
headers: {
|
|
99
|
-
"Access-Control-Allow-Origin": "*",
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
performance: {
|
|
103
|
-
hints: mode === production && "warning",
|
|
104
|
-
},
|
|
105
|
-
plugins: [
|
|
106
|
-
new ForkTsCheckerWebpackPlugin(),
|
|
107
|
-
new CleanWebpackPlugin(),
|
|
108
|
-
new BundleAnalyzerPlugin({
|
|
109
|
-
analyzerMode: env && env.analyze ? "server" : "disabled",
|
|
110
|
-
}),
|
|
111
|
-
new DefinePlugin({
|
|
112
|
-
"process.env.FRAMEWORK_VERSION": JSON.stringify(frameworkVersion),
|
|
113
|
-
}),
|
|
114
|
-
new ModuleFederationPlugin({
|
|
115
|
-
name,
|
|
116
|
-
library: { type: "system", name },
|
|
117
|
-
filename,
|
|
118
|
-
exposes: {
|
|
119
|
-
app: srcFile,
|
|
120
|
-
},
|
|
121
|
-
shared: Object.keys(peerDependencies).reduce((obj, depName) => {
|
|
122
|
-
obj[depName] = {
|
|
123
|
-
requiredVersion: peerDependencies[depName],
|
|
124
|
-
singleton: true,
|
|
125
|
-
import: depName,
|
|
126
|
-
shareKey: depName,
|
|
127
|
-
shareScope: "default",
|
|
128
|
-
};
|
|
129
|
-
return obj;
|
|
130
|
-
}, {}),
|
|
131
|
-
}),
|
|
132
|
-
new StatsWriterPlugin({
|
|
133
|
-
filename: `${filename}.buildmanifest.json`,
|
|
134
|
-
stats: {
|
|
135
|
-
all: false,
|
|
136
|
-
chunks: true,
|
|
137
|
-
},
|
|
138
|
-
}),
|
|
139
|
-
],
|
|
140
|
-
resolve: {
|
|
141
|
-
extensions: [".tsx", ".ts", ".jsx", ".js", ".scss"],
|
|
142
|
-
},
|
|
143
|
-
...overrides,
|
|
144
|
-
};
|
|
145
|
-
return mergeWith(baseConfig, additionalConfig, mergeFunction);
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
function mergeFunction(objValue, srcValue) {
|
|
149
|
-
if (isArray(objValue)) {
|
|
150
|
-
return objValue.concat(srcValue);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* This object will be merged into the webpack config.
|
|
156
|
-
* Array values will be concatenated with the existing array.
|
|
157
|
-
* Make sure to modify this object and not reassign it.
|
|
158
|
-
*/
|
|
159
|
-
module.exports.additionalConfig = additionalConfig;
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* The keys of this object will override the top-level keys
|
|
163
|
-
* of the webpack config.
|
|
164
|
-
* Make sure to modify this object and not reassign it.
|
|
165
|
-
*/
|
|
166
|
-
module.exports.overrides = overrides;
|
|
3
|
+
module.exports = Object.assign(extendConfig, rest);
|
package/dist/cli.js
CHANGED
|
@@ -51,7 +51,7 @@ yargs.command("debug", "Starts a new debugging session of the OpenMRS app shell.
|
|
|
51
51
|
.default("host", "localhost")
|
|
52
52
|
.describe("host", "The host name or IP for the server to use.")
|
|
53
53
|
.string("backend")
|
|
54
|
-
.default("backend", "https://openmrs
|
|
54
|
+
.default("backend", "https://dev3.openmrs.org/")
|
|
55
55
|
.describe("backend", "The backend to proxy API requests to.")
|
|
56
56
|
.string("add-cookie")
|
|
57
57
|
.default("add-cookie", "")
|
|
@@ -94,7 +94,7 @@ yargs.command("develop", "Starts a new frontend module development session with
|
|
|
94
94
|
.default("host", "localhost")
|
|
95
95
|
.describe("host", "The host name or IP for the server to use.")
|
|
96
96
|
.string("backend")
|
|
97
|
-
.default("backend", "https://openmrs
|
|
97
|
+
.default("backend", "https://dev3.openmrs.org/")
|
|
98
98
|
.describe("backend", "The backend to proxy API requests to.")
|
|
99
99
|
.string("add-cookie")
|
|
100
100
|
.default("add-cookie", "")
|
|
@@ -184,7 +184,7 @@ yargs.command(["start", "$0"], "Starts the app shell using the provided configur
|
|
|
184
184
|
.default("host", "localhost")
|
|
185
185
|
.describe("host", "The host name or IP for the server to use.")
|
|
186
186
|
.string("backend")
|
|
187
|
-
.default("backend", "https://openmrs
|
|
187
|
+
.default("backend", "https://dev3.openmrs.org/")
|
|
188
188
|
.describe("backend", "The backend to proxy API requests to.")
|
|
189
189
|
.string("add-cookie")
|
|
190
190
|
.default("add-cookie", "")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getMainBundle = exports.getSharedDependencies = void 0;
|
|
4
4
|
const path_1 = require("path");
|
|
5
5
|
function getSharedDependencies() {
|
|
6
6
|
return require("@openmrs/esm-app-shell/dependencies.json");
|
|
@@ -15,15 +15,3 @@ function getMainBundle(project) {
|
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
exports.getMainBundle = getMainBundle;
|
|
18
|
-
function getDependentModules(root, host, peerDependencies = {}, sharedDependencies = []) {
|
|
19
|
-
const appShellShared = [...getSharedDependencies(), ...sharedDependencies];
|
|
20
|
-
const mifeExpected = Object.keys(peerDependencies);
|
|
21
|
-
const mifeRequired = mifeExpected.filter((name) => !appShellShared.includes(name));
|
|
22
|
-
return mifeRequired.reduce((deps, moduleName) => {
|
|
23
|
-
const project = require(`${root}/node_modules/${moduleName}/package.json`);
|
|
24
|
-
const bundle = getMainBundle(project);
|
|
25
|
-
deps[moduleName] = `${host}/node_modules/${moduleName}/${bundle.path}`;
|
|
26
|
-
return deps;
|
|
27
|
-
}, {});
|
|
28
|
-
}
|
|
29
|
-
exports.getDependentModules = getDependentModules;
|
package/dist/utils/importmap.js
CHANGED
|
@@ -79,12 +79,10 @@ function matchAny(baseDir, patterns) {
|
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
const defaultConfigPath = (0, path_1.resolve)(__dirname, "..", "..", "default-webpack-config.js");
|
|
82
|
-
function runProjectWebpack(configPath, port, project,
|
|
82
|
+
function runProjectWebpack(configPath, port, project, sourceDirectory, importMap) {
|
|
83
83
|
const bundle = (0, dependencies_1.getMainBundle)(project);
|
|
84
84
|
const host = `http://localhost:${port}`;
|
|
85
|
-
const dependencies = (0, dependencies_1.getDependentModules)(process.cwd(), host, project.peerDependencies, sharedDependencies);
|
|
86
85
|
(0, webpack_1.startWebpack)(configPath, port, sourceDirectory);
|
|
87
|
-
Object.assign(importMap, dependencies);
|
|
88
86
|
importMap[project.name] = `${host}/${bundle.name}`;
|
|
89
87
|
}
|
|
90
88
|
function runProject(basePort, sharedDependencies, sourceDirectoryPatterns) {
|
|
@@ -120,11 +118,11 @@ function runProject(basePort, sharedDependencies, sourceDirectoryPatterns) {
|
|
|
120
118
|
else if (!(0, fs_1.existsSync)(configPath)) {
|
|
121
119
|
// try to locate and run via default webpack
|
|
122
120
|
(0, logger_1.logWarn)(`No "webpack.config.json" found in directory "${sourceDirectory}". Trying to use default config ...`);
|
|
123
|
-
runProjectWebpack(defaultConfigPath, port, project,
|
|
121
|
+
runProjectWebpack(defaultConfigPath, port, project, sourceDirectory, importMap);
|
|
124
122
|
}
|
|
125
123
|
else {
|
|
126
124
|
// run via specialized webpack.config.js
|
|
127
|
-
runProjectWebpack(configPath, port, project,
|
|
125
|
+
runProjectWebpack(configPath, port, project, sourceDirectory, importMap);
|
|
128
126
|
}
|
|
129
127
|
}
|
|
130
128
|
(0, logger_1.logInfo)(`Assembled dynamic import map (${Object.keys(importMap).join(", ")}).`);
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openmrs",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.1-pre.1010",
|
|
4
4
|
"license": "MPL-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"openmrs": "./dist/cli.js"
|
|
8
8
|
},
|
|
9
|
+
"types": "src/index.ts",
|
|
9
10
|
"engines": {
|
|
10
11
|
"node": ">= 12.0.0"
|
|
11
12
|
},
|
|
@@ -31,42 +32,30 @@
|
|
|
31
32
|
],
|
|
32
33
|
"homepage": "https://github.com/openmrs/openmrs-esm-core#readme",
|
|
33
34
|
"dependencies": {
|
|
34
|
-
"@
|
|
35
|
-
"@
|
|
36
|
-
"@babel/preset-react": "^7.10.4",
|
|
37
|
-
"@babel/preset-typescript": "^7.10.4",
|
|
38
|
-
"@openmrs/esm-app-shell": "3.2.0",
|
|
35
|
+
"@openmrs/esm-app-shell": "3.2.1-pre.1010",
|
|
36
|
+
"@openmrs/webpack-config": "^3.2.1-pre.1010",
|
|
39
37
|
"@types/react": "^16.9.46",
|
|
40
38
|
"@types/systemjs": "^6.1.0",
|
|
41
|
-
"autoprefixer": "^
|
|
39
|
+
"autoprefixer": "^10.4.2",
|
|
42
40
|
"axios": "^0.21.1",
|
|
43
|
-
"babel-loader": "^8.2.2",
|
|
44
41
|
"browserslist-config-openmrs": "^1.0.1",
|
|
45
|
-
"clean-webpack-plugin": "^4.0.0",
|
|
46
42
|
"copy-webpack-plugin": "^10.0.0",
|
|
47
|
-
"
|
|
48
|
-
"cssnano": "^4.1.10",
|
|
43
|
+
"cssnano": "^5.0.16",
|
|
49
44
|
"ejs": "^2.6.2",
|
|
50
|
-
"fork-ts-checker-webpack-plugin": "^6.5.0",
|
|
51
45
|
"glob": "^7.1.3",
|
|
52
46
|
"html-webpack-plugin": "^5.5.0",
|
|
53
47
|
"inquirer": "^7.3.3",
|
|
54
48
|
"mini-css-extract-plugin": "^2.4.5",
|
|
49
|
+
"postcss": "^8.4.6",
|
|
55
50
|
"postcss-loader": "^6.2.1",
|
|
56
51
|
"rimraf": "^3.0.2",
|
|
57
|
-
"sass": "^1.44.0",
|
|
58
|
-
"sass-loader": "^12.3.0",
|
|
59
|
-
"style-loader": "^3.3.1",
|
|
60
|
-
"systemjs-webpack-interop": "^2.3.7",
|
|
61
52
|
"tar": "^6.0.5",
|
|
62
53
|
"ts-loader": "^9.2.6",
|
|
63
54
|
"typescript": "~4.5.2",
|
|
64
55
|
"webpack": "^5.64.0",
|
|
65
|
-
"webpack-bundle-analyzer": "^4.5.0",
|
|
66
56
|
"webpack-cli": "^4.9.1",
|
|
67
57
|
"webpack-dev-server": "^4.6.0",
|
|
68
58
|
"webpack-pwa-manifest": "^4.3.0",
|
|
69
|
-
"webpack-stats-plugin": "^1.0.3",
|
|
70
59
|
"workbox-webpack-plugin": "^6.4.1",
|
|
71
60
|
"yargs": "16.0.3"
|
|
72
61
|
},
|
|
@@ -78,5 +67,5 @@
|
|
|
78
67
|
"@types/rimraf": "^2.0.2",
|
|
79
68
|
"@types/tar": "^4.0.3"
|
|
80
69
|
},
|
|
81
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "2d2457c75087b97cd8959d6a4dc854e3f6b8f6f5"
|
|
82
71
|
}
|
package/src/cli.ts
CHANGED
|
@@ -45,7 +45,7 @@ yargs.command(
|
|
|
45
45
|
.default("host", "localhost")
|
|
46
46
|
.describe("host", "The host name or IP for the server to use.")
|
|
47
47
|
.string("backend")
|
|
48
|
-
.default("backend", "https://openmrs
|
|
48
|
+
.default("backend", "https://dev3.openmrs.org/")
|
|
49
49
|
.describe("backend", "The backend to proxy API requests to.")
|
|
50
50
|
.string("add-cookie")
|
|
51
51
|
.default("add-cookie", "")
|
|
@@ -139,7 +139,7 @@ yargs.command(
|
|
|
139
139
|
.default("host", "localhost")
|
|
140
140
|
.describe("host", "The host name or IP for the server to use.")
|
|
141
141
|
.string("backend")
|
|
142
|
-
.default("backend", "https://openmrs
|
|
142
|
+
.default("backend", "https://dev3.openmrs.org/")
|
|
143
143
|
.describe("backend", "The backend to proxy API requests to.")
|
|
144
144
|
.string("add-cookie")
|
|
145
145
|
.default("add-cookie", "")
|
|
@@ -337,7 +337,7 @@ yargs.command(
|
|
|
337
337
|
.default("host", "localhost")
|
|
338
338
|
.describe("host", "The host name or IP for the server to use.")
|
|
339
339
|
.string("backend")
|
|
340
|
-
.default("backend", "https://openmrs
|
|
340
|
+
.default("backend", "https://dev3.openmrs.org/")
|
|
341
341
|
.describe("backend", "The backend to proxy API requests to.")
|
|
342
342
|
.string("add-cookie")
|
|
343
343
|
.default("add-cookie", "")
|
|
@@ -12,23 +12,3 @@ export function getMainBundle(project: any) {
|
|
|
12
12
|
dir: dirname(file),
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
export function getDependentModules(
|
|
17
|
-
root: string,
|
|
18
|
-
host: string,
|
|
19
|
-
peerDependencies: Record<string, string> = {},
|
|
20
|
-
sharedDependencies: Array<string> = []
|
|
21
|
-
) {
|
|
22
|
-
const appShellShared = [...getSharedDependencies(), ...sharedDependencies];
|
|
23
|
-
const mifeExpected = Object.keys(peerDependencies);
|
|
24
|
-
const mifeRequired = mifeExpected.filter(
|
|
25
|
-
(name) => !appShellShared.includes(name)
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
return mifeRequired.reduce((deps, moduleName) => {
|
|
29
|
-
const project = require(`${root}/node_modules/${moduleName}/package.json`);
|
|
30
|
-
const bundle = getMainBundle(project);
|
|
31
|
-
deps[moduleName] = `${host}/node_modules/${moduleName}/${bundle.path}`;
|
|
32
|
-
return deps;
|
|
33
|
-
}, {});
|
|
34
|
-
}
|
package/src/utils/importmap.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { existsSync, readFileSync } from "fs";
|
|
|
4
4
|
import { exec } from "child_process";
|
|
5
5
|
import { logFail, logInfo, logWarn } from "./logger";
|
|
6
6
|
import { startWebpack } from "./webpack";
|
|
7
|
-
import {
|
|
7
|
+
import { getMainBundle } from "./dependencies";
|
|
8
8
|
import axios from "axios";
|
|
9
9
|
|
|
10
10
|
import glob = require("glob");
|
|
@@ -89,21 +89,13 @@ function runProjectWebpack(
|
|
|
89
89
|
configPath: string,
|
|
90
90
|
port: number,
|
|
91
91
|
project: any,
|
|
92
|
-
sharedDependencies: Array<string>,
|
|
93
92
|
sourceDirectory: string,
|
|
94
93
|
importMap: Record<string, string>
|
|
95
94
|
) {
|
|
96
95
|
const bundle = getMainBundle(project);
|
|
97
96
|
const host = `http://localhost:${port}`;
|
|
98
|
-
const dependencies = getDependentModules(
|
|
99
|
-
process.cwd(),
|
|
100
|
-
host,
|
|
101
|
-
project.peerDependencies,
|
|
102
|
-
sharedDependencies
|
|
103
|
-
);
|
|
104
97
|
|
|
105
98
|
startWebpack(configPath, port, sourceDirectory);
|
|
106
|
-
Object.assign(importMap, dependencies);
|
|
107
99
|
importMap[project.name] = `${host}/${bundle.name}`;
|
|
108
100
|
}
|
|
109
101
|
|
|
@@ -156,20 +148,12 @@ export async function runProject(
|
|
|
156
148
|
defaultConfigPath,
|
|
157
149
|
port,
|
|
158
150
|
project,
|
|
159
|
-
sharedDependencies,
|
|
160
151
|
sourceDirectory,
|
|
161
152
|
importMap
|
|
162
153
|
);
|
|
163
154
|
} else {
|
|
164
155
|
// run via specialized webpack.config.js
|
|
165
|
-
runProjectWebpack(
|
|
166
|
-
configPath,
|
|
167
|
-
port,
|
|
168
|
-
project,
|
|
169
|
-
sharedDependencies,
|
|
170
|
-
sourceDirectory,
|
|
171
|
-
importMap
|
|
172
|
-
);
|
|
156
|
+
runProjectWebpack(configPath, port, project, sourceDirectory, importMap);
|
|
173
157
|
}
|
|
174
158
|
}
|
|
175
159
|
|