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.
@@ -1,166 +1,3 @@
1
- const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
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
- const production = "production";
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-spa.org/")
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-spa.org/")
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-spa.org/")
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.getDependentModules = exports.getMainBundle = exports.getSharedDependencies = void 0;
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;
@@ -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, sharedDependencies, sourceDirectory, importMap) {
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, sharedDependencies, sourceDirectory, importMap);
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, sharedDependencies, sourceDirectory, importMap);
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.0",
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
- "@babel/core": "^7.11.4",
35
- "@babel/preset-env": "^7.11.0",
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": "^9.6.1",
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
- "css-loader": "^5.2.4",
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": "9c4a04089e29ff99321d6fef72294f402deb0f7b"
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-spa.org/")
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-spa.org/")
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-spa.org/")
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
- }
@@ -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 { getDependentModules, getMainBundle } from "./dependencies";
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