@elliemae/pui-cli 6.5.6 → 6.6.0

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.
@@ -0,0 +1,50 @@
1
+ const { exit } = require('yargs');
2
+ const { logError } = require('./utils');
3
+ const { useWorkspaceVersion } = require('../monorepo/use-workspace-version');
4
+ const { useRegistryVersion } = require('../monorepo/use-registry-version');
5
+ const { deleteMergedTags } = require('../monorepo/delete-merged-tags');
6
+ const {
7
+ updateRootPackageVersion,
8
+ } = require('../monorepo/update-root-package-version');
9
+
10
+ async function handler(argv) {
11
+ try {
12
+ if (argv.deleteTags) {
13
+ await deleteMergedTags();
14
+ } else if (argv.updateRoot) {
15
+ await updateRootPackageVersion();
16
+ } else if (argv.useRegistry) {
17
+ await useRegistryVersion();
18
+ } else if (argv.useWorkspace) {
19
+ await useWorkspaceVersion();
20
+ }
21
+ } catch (err) {
22
+ logError('Monorepo versioning failed', err);
23
+ exit(-1, err);
24
+ }
25
+ }
26
+
27
+ exports.command = 'version [options]';
28
+
29
+ exports.describe = 'version monorepo';
30
+
31
+ exports.builder = {
32
+ deleteTags: {
33
+ type: 'boolean',
34
+ default: false,
35
+ },
36
+ updateRoot: {
37
+ type: 'boolean',
38
+ default: false,
39
+ },
40
+ useRegistry: {
41
+ type: 'boolean',
42
+ default: false,
43
+ },
44
+ useWorkspace: {
45
+ type: 'boolean',
46
+ default: false,
47
+ },
48
+ };
49
+
50
+ exports.handler = handler;
@@ -0,0 +1,48 @@
1
+ const { execSync } = require('child_process');
2
+ const cwd = process.cwd();
3
+ const execaOptions = { cwd, stdio: 'inherit' };
4
+
5
+ const semVerRegEx =
6
+ /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
7
+
8
+ const isSemVersion = (tagName) => semVerRegEx.test(tagName);
9
+ const branchName = (process.env.BRANCH_NAME || 'master').toLowerCase();
10
+
11
+ const branchTags = {
12
+ master: /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/,
13
+ next: /^v.*-next\.(0|[1-9]\d*)/,
14
+ alpha: /^v.*-alpha\.(0|[1-9]\d*)/,
15
+ beta: /^v.*-beta\.(0|[1-9]\d*)/,
16
+ };
17
+
18
+ const deleteTags = (cmd, filter) => {
19
+ const result = execSync(cmd, { cwd });
20
+ if (!result) return;
21
+ const tags = result.toString().split('\n').join(' ');
22
+ execSync(`git tag -d ${filter ? filter(tags) : tags}`, { cwd });
23
+ };
24
+
25
+ const tagsFromOtherBranches = (tags = []) => {
26
+ const regex = branchTags[branchName] || branchTags.master;
27
+ return tags
28
+ .split(' ')
29
+ .filter((tagName) => isSemVersion(tagName) && !regex.test(tagName))
30
+ .join(' ');
31
+ };
32
+
33
+ exports.deleteMergedTags = () => {
34
+ try {
35
+ // get tag names
36
+ if (branchName) {
37
+ // delete all tags that are not reachable from the current branch
38
+ deleteTags(`git tag -l --no-merged ${branchName}`);
39
+ // delete all tags that were not created in current branch
40
+ deleteTags(`git tag -l --merged ${branchName}`, tagsFromOtherBranches);
41
+ console.log('Last two tags: ');
42
+ execSync('git tag --sort=-creatordate | head -n 2', execaOptions);
43
+ }
44
+ } catch (error) {
45
+ // eslint-disable-next-line no-console
46
+ console.error(error);
47
+ }
48
+ };
@@ -0,0 +1,22 @@
1
+ const path = require('path');
2
+ const { readFile, writeFile } = require('fs/promises');
3
+ const { findMonoRepoRoot } = require('./utils');
4
+
5
+ const monorepoRoot = findMonoRepoRoot();
6
+
7
+ const getLernaVersion = async () => {
8
+ const lernaConfig = JSON.parse(
9
+ await readFile(path.join(monorepoRoot, 'lerna.json'), 'utf8'),
10
+ );
11
+ return lernaConfig?.version;
12
+ };
13
+
14
+ exports.updateRootPackageVersion = async () => {
15
+ const newVersion = await getLernaVersion();
16
+ const pkgJSON = JSON.parse(await readFile('./package.json', 'utf8'));
17
+ pkgJSON.version = newVersion;
18
+ await writeFile(
19
+ path.join(monorepoRoot, 'package.json'),
20
+ JSON.stringify(pkgJSON, null, 2),
21
+ );
22
+ };
@@ -0,0 +1,22 @@
1
+ const fg = require('fast-glob');
2
+ const { readFile, writeFile } = require('fs/promises');
3
+ const normalizePath = require('normalize-path');
4
+ const { findMonoRepoRoot } = require('./utils');
5
+
6
+ const monorepoRoot = normalizePath(findMonoRepoRoot());
7
+
8
+ exports.useRegistryVersion = async () => {
9
+ const files = await fg([
10
+ `${monorepoRoot}/libs/*/package.json`,
11
+ `${monorepoRoot}/apps/*/package.json`,
12
+ `${monorepoRoot}/package.json`,
13
+ ]);
14
+ Promise.all(
15
+ files.map(async (file) => {
16
+ let pkgJSONData = await readFile(file, 'utf8');
17
+ const pkgVersion = JSON.parse(pkgJSONData).version;
18
+ pkgJSONData = pkgJSONData.replace(/workspace:\*/g, pkgVersion);
19
+ await writeFile(file, pkgJSONData);
20
+ }),
21
+ );
22
+ };
@@ -0,0 +1,29 @@
1
+ const fg = require('fast-glob');
2
+ const { readFile, writeFile } = require('fs/promises');
3
+ const normalizePath = require('normalize-path');
4
+ const { findMonoRepoRoot } = require('./utils');
5
+
6
+ const monorepoRoot = normalizePath(findMonoRepoRoot());
7
+
8
+ exports.useWorspaceVersion = async () => {
9
+ const files = await fg([
10
+ `${monorepoRoot}/libs/*/package.json`,
11
+ `${monorepoRoot}/apps/*/package.json`,
12
+ `${monorepoRoot}/package.json`,
13
+ ]);
14
+ Promise.all(
15
+ files.map(async (file) => {
16
+ let pkgJSONData = await readFile(file, 'utf8');
17
+ const pkgVersion = JSON.parse(pkgJSONData).version;
18
+ pkgJSONData = pkgJSONData.replace(
19
+ new RegExp(pkgVersion, 'g'),
20
+ 'workspace:*',
21
+ );
22
+ pkgJSONData = pkgJSONData.replace(
23
+ /"version": "workspace:\*"/g,
24
+ `"version": "${pkgVersion}"`,
25
+ );
26
+ await writeFile(file, pkgJSONData);
27
+ }),
28
+ );
29
+ };
@@ -4,7 +4,7 @@ const { sync: findUp } = require('find-up');
4
4
  const WORKSPACE_DIR_ENV_VAR = 'NPM_CONFIG_WORKSPACE_DIR';
5
5
  const WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml';
6
6
 
7
- exports.findPnpmWorkspaceDir = (cwd) => {
7
+ exports.findMonoRepoRoot = (cwd = process.cwd()) => {
8
8
  const workspaceManifestDirEnvVar =
9
9
  process.env[WORKSPACE_DIR_ENV_VAR] ??
10
10
  process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()];
@@ -2,7 +2,7 @@ const path = require('path');
2
2
  const normalizePath = require('normalize-path');
3
3
  const { getAppConfig, getAssetPath } = require('../webpack/helpers');
4
4
  const swcrcConfig = require('../transpile/swcrc.config.js');
5
- const { findPnpmWorkspaceDir } = require('../monorepo/utils');
5
+ const { findMonoRepoRoot } = require('../monorepo/utils');
6
6
 
7
7
  let isReactModule = true;
8
8
  try {
@@ -18,7 +18,7 @@ const getMockFilePath = (fileName) =>
18
18
  normalizePath(path.resolve(__dirname, './mocks', fileName));
19
19
 
20
20
  const getNodeModulesPath = (fileName) => {
21
- const monorepoRoot = findPnpmWorkspaceDir(process.cwd());
21
+ const monorepoRoot = findMonoRepoRoot(process.cwd());
22
22
  return normalizePath(
23
23
  monorepoRoot
24
24
  ? path.join(monorepoRoot, 'node_modules', fileName)
@@ -4,7 +4,7 @@ const fs = require('fs');
4
4
  const _ = require('lodash');
5
5
  const CompressionPlugin = require('compression-webpack-plugin');
6
6
  const zlib = require('zlib');
7
- const { findPnpmWorkspaceDir } = require('../monorepo/utils');
7
+ const { findMonoRepoRoot } = require('../monorepo/utils');
8
8
 
9
9
  let pathSep = path.sep;
10
10
  if (pathSep === '\\')
@@ -68,7 +68,7 @@ const mapToFolder = (dependencies, folder) =>
68
68
  );
69
69
 
70
70
  const getAlias = () => {
71
- const monorepoRoot = findPnpmWorkspaceDir(process.cwd()) || '';
71
+ const monorepoRoot = findMonoRepoRoot(process.cwd()) || '';
72
72
  return mapToFolder(
73
73
  [
74
74
  '@babel/runtime',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/pui-cli",
3
- "version": "6.5.6",
3
+ "version": "6.6.0",
4
4
  "private": false,
5
5
  "description": "ICE MT UI Platform CLI",
6
6
  "sideEffects": false,
@@ -63,8 +63,8 @@
63
63
  "@babel/preset-react": "~7.16.7",
64
64
  "@babel/preset-typescript": "~7.16.7",
65
65
  "@babel/runtime": "~7.17.2",
66
- "@commitlint/cli": "~16.1.0",
67
- "@commitlint/config-conventional": "~16.0.0",
66
+ "@commitlint/cli": "~16.2.1",
67
+ "@commitlint/config-conventional": "~16.2.1",
68
68
  "@elliemae/browserslist-config-elliemae-latest-browsers": "~1.3.0",
69
69
  "@faker-js/faker": "6.0.0-alpha.6",
70
70
  "@pmmmwh/react-refresh-webpack-plugin": "~0.5.4",
@@ -90,11 +90,11 @@
90
90
  "@testing-library/react": "~12.1.2",
91
91
  "@testing-library/react-hooks": "~7.0.2",
92
92
  "@types/jest": "~27.4.0",
93
- "@types/node": "~17.0.17",
93
+ "@types/node": "~17.0.18",
94
94
  "@types/rimraf": "~3.0.2",
95
95
  "@types/testing-library__jest-dom": "~5.14.2",
96
- "@typescript-eslint/eslint-plugin": "~5.11.0",
97
- "@typescript-eslint/parser": "~5.11.0",
96
+ "@typescript-eslint/eslint-plugin": "~5.12.0",
97
+ "@typescript-eslint/parser": "~5.12.0",
98
98
  "autoprefixer": "~10.4.2",
99
99
  "axe-core": "~4.4.1",
100
100
  "babel-loader": "~8.2.3",
@@ -177,7 +177,7 @@
177
177
  "jest-styled-components": "~7.0.8",
178
178
  "jscodeshift": "~0.13.1",
179
179
  "jsdoc": "~3.6.10",
180
- "lint-staged": "~12.3.3",
180
+ "lint-staged": "~12.3.4",
181
181
  "mini-css-extract-plugin": "~2.5.3",
182
182
  "minimist": "~1.2.5",
183
183
  "moment": "~2.29.1",
@@ -198,7 +198,7 @@
198
198
  "postcss-jsx": "~0.36.4",
199
199
  "postcss-loader": "~6.2.1",
200
200
  "postcss-markdown": "~1.2.0",
201
- "postcss-preset-env": "~7.3.2",
201
+ "postcss-preset-env": "~7.3.3",
202
202
  "postcss-syntax": "~0.36.2",
203
203
  "prettier": "~2.5.1",
204
204
  "pug": "~3.0.2",
@@ -229,8 +229,8 @@
229
229
  "update-notifier": "~5.1.0",
230
230
  "url-loader": "~4.1.1",
231
231
  "uuid": "~8.3.2",
232
- "vite": "~2.8.1",
233
- "vitest": "~0.3.4",
232
+ "vite": "~2.8.2",
233
+ "vitest": "~0.3.5",
234
234
  "webpack": "~5.65.0",
235
235
  "webpack-bundle-analyzer": "~4.5.0",
236
236
  "webpack-cli": "~4.9.2",