@atlassian/wrm-troubleshooting 0.0.0-snapshot.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +191 -0
  2. package/CODE_OF_CONDUCT.md +73 -0
  3. package/LICENSE +13 -0
  4. package/README.md +99 -0
  5. package/bin/cli.js +5 -0
  6. package/dist/analytics/analytics.js +74 -0
  7. package/dist/analytics/analytics.js.map +1 -0
  8. package/dist/analytics/events.js +27 -0
  9. package/dist/analytics/events.js.map +1 -0
  10. package/dist/applicationUrls.js +39 -0
  11. package/dist/applicationUrls.js.map +1 -0
  12. package/dist/atlassianPluginXml.js +69 -0
  13. package/dist/atlassianPluginXml.js.map +1 -0
  14. package/dist/checkForUpdate.js +58 -0
  15. package/dist/checkForUpdate.js.map +1 -0
  16. package/dist/cli.js +76 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/cliUtils.js +21 -0
  19. package/dist/cliUtils.js.map +1 -0
  20. package/dist/globWithOptions.js +18 -0
  21. package/dist/globWithOptions.js.map +1 -0
  22. package/dist/maven/MavenError.js +14 -0
  23. package/dist/maven/MavenError.js.map +1 -0
  24. package/dist/paths.js +12 -0
  25. package/dist/paths.js.map +1 -0
  26. package/dist/pom.js +147 -0
  27. package/dist/pom.js.map +1 -0
  28. package/dist/steps/getEffectivePomConfig.js +94 -0
  29. package/dist/steps/getEffectivePomConfig.js.map +1 -0
  30. package/dist/steps/getEffectiveWebpackConfig.js +35 -0
  31. package/dist/steps/getEffectiveWebpackConfig.js.map +1 -0
  32. package/dist/steps/getWrmWebpackPlugin.js +22 -0
  33. package/dist/steps/getWrmWebpackPlugin.js.map +1 -0
  34. package/dist/steps/index.js +27 -0
  35. package/dist/steps/index.js.map +1 -0
  36. package/dist/steps/locatePomFile.js +30 -0
  37. package/dist/steps/locatePomFile.js.map +1 -0
  38. package/dist/steps/locateWebpackConfigFile.js +32 -0
  39. package/dist/steps/locateWebpackConfigFile.js.map +1 -0
  40. package/dist/steps/types.js +48 -0
  41. package/dist/steps/types.js.map +1 -0
  42. package/dist/steps/validateOptions.js +21 -0
  43. package/dist/steps/validateOptions.js.map +1 -0
  44. package/dist/steps/verifyPomConfigIsValid.js +22 -0
  45. package/dist/steps/verifyPomConfigIsValid.js.map +1 -0
  46. package/dist/steps/verifyWebpackBundle.js +26 -0
  47. package/dist/steps/verifyWebpackBundle.js.map +1 -0
  48. package/dist/steps/verifyWrmPluginHasValidConfig.js +28 -0
  49. package/dist/steps/verifyWrmPluginHasValidConfig.js.map +1 -0
  50. package/dist/steps/verifyWrmPluginScanFolders.js +15 -0
  51. package/dist/steps/verifyWrmPluginScanFolders.js.map +1 -0
  52. package/dist/steps/verifyWrmRuntime.js +139 -0
  53. package/dist/steps/verifyWrmRuntime.js.map +1 -0
  54. package/dist/troubleshooting.js +219 -0
  55. package/dist/troubleshooting.js.map +1 -0
  56. package/dist/troubleshootingOptions.js +12 -0
  57. package/dist/troubleshootingOptions.js.map +1 -0
  58. package/dist/types.js +3 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/webpack/webpack.js +149 -0
  61. package/dist/webpack/webpack.js.map +1 -0
  62. package/dist/webpack/webpackCli.js +167 -0
  63. package/dist/webpack/webpackCli.js.map +1 -0
  64. package/dist/webpack/webpackCliV3.js +33 -0
  65. package/dist/webpack/webpackCliV3.js.map +1 -0
  66. package/dist/webpack/webpackCliV4.js +33 -0
  67. package/dist/webpack/webpackCliV4.js.map +1 -0
  68. package/dist/webpack/webpackError.js +14 -0
  69. package/dist/webpack/webpackError.js.map +1 -0
  70. package/dist/webpackPlugin/WebpackRetrieveConfigPlugin.js +61 -0
  71. package/dist/webpackPlugin/WebpackRetrieveConfigPlugin.js.map +1 -0
  72. package/dist/webpackPlugin/webpack.config.js +10 -0
  73. package/dist/webpackPlugin/webpack.config.js.map +1 -0
  74. package/dist/webpackWrmPlugin.js +62 -0
  75. package/dist/webpackWrmPlugin.js.map +1 -0
  76. package/dist/wrm/fetchWithTimeout.js +23 -0
  77. package/dist/wrm/fetchWithTimeout.js.map +1 -0
  78. package/dist/wrm/wrmRestApi.js +93 -0
  79. package/dist/wrm/wrmRestApi.js.map +1 -0
  80. package/dist/wrm/wrmTypes.js +3 -0
  81. package/dist/wrm/wrmTypes.js.map +1 -0
  82. package/dist/xmlParser.js +42 -0
  83. package/dist/xmlParser.js.map +1 -0
  84. package/dist/yargsHelper.js +22 -0
  85. package/dist/yargsHelper.js.map +1 -0
  86. package/package.json +97 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchWebResources = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const fetchWithTimeout_1 = require("./fetchWithTimeout");
9
+ const SUPER_BATCH_CONTEXT_KEY = '_super';
10
+ async function fetchWebResources(applicationUrl, resourceKeys, timeout) {
11
+ const url = `${applicationUrl}/rest/webResources/1.0/resources`;
12
+ process.env.DEBUG && console.debug(`Fetching web-resource from ${url}`);
13
+ // https://hello.atlassian.net/wiki/spaces/SVRFE/pages/491199354/WRM+Front-end+API#RESOURCES
14
+ const payload = {
15
+ r: Array.isArray(resourceKeys) ? resourceKeys : [resourceKeys],
16
+ c: [],
17
+ xr: [],
18
+ xc: [SUPER_BATCH_CONTEXT_KEY], // Ignore super batch
19
+ };
20
+ let jsonResponse;
21
+ try {
22
+ const response = await (0, fetchWithTimeout_1.fetchWithTimeout)(timeout, url, {
23
+ method: 'post',
24
+ headers: {
25
+ 'Content-Type': 'application/json',
26
+ },
27
+ body: JSON.stringify(payload),
28
+ });
29
+ if (!response.ok) {
30
+ // TODO: What should be the error here?!
31
+ throw new Error(response.status.toString());
32
+ }
33
+ jsonResponse = (await response.json());
34
+ }
35
+ catch (err) {
36
+ const error = err;
37
+ if (error.name === 'AbortError') {
38
+ return new fetchWithTimeout_1.FetchTimeoutError(`Fetching web-resource for "${resourceKeys}" timed out`);
39
+ }
40
+ return Error(`Failed to load the web-resource for "${chalk_1.default.bold(resourceKeys)}" resource key.\nError: ${error.message}`);
41
+ }
42
+ const { resources } = jsonResponse;
43
+ const maybeContents = await loadWrmResources(applicationUrl, resources, timeout);
44
+ return maybeContents.filter(notError);
45
+ }
46
+ exports.fetchWebResources = fetchWebResources;
47
+ async function loadWrmResources(applicationUrl, resources, timeout) {
48
+ const simplifiedResourcesWithoutContent = resources.map((resource) => {
49
+ const { url: urlPathname, resourceType } = resource;
50
+ // We need to build a new absolute URL
51
+ const url = new URL(applicationUrl);
52
+ url.pathname = urlPathname;
53
+ return {
54
+ url: url.toString(),
55
+ type: resourceType,
56
+ };
57
+ });
58
+ const simplifiedResources = [];
59
+ for (const resource of simplifiedResourcesWithoutContent) {
60
+ const content = await loadWrmResource(resource.url, timeout);
61
+ simplifiedResources.push(content instanceof Error
62
+ ? content
63
+ : {
64
+ ...resource,
65
+ content,
66
+ });
67
+ }
68
+ return simplifiedResources;
69
+ }
70
+ async function loadWrmResource(resourceUrl, timeout) {
71
+ try {
72
+ const response = await (0, fetchWithTimeout_1.fetchWithTimeout)(timeout, resourceUrl, {
73
+ method: 'get',
74
+ });
75
+ if (!response.ok) {
76
+ // TODO: should we retry? Or based on error code? (do we only check if we know an instance is running?)
77
+ // TODO: What should be the error here?!
78
+ throw new Error(response.status.toString());
79
+ }
80
+ return await response.text();
81
+ }
82
+ catch (err) {
83
+ const error = err;
84
+ if (error.name === 'AbortError') {
85
+ return new fetchWithTimeout_1.FetchTimeoutError(`Loading web-resource "${resourceUrl}" timed out`);
86
+ }
87
+ return Error(`Can't load the web-resource for "${resourceUrl}" resource key. Error: ${error.message}`);
88
+ }
89
+ }
90
+ function notError(value) {
91
+ return !(value instanceof Error);
92
+ }
93
+ //# sourceMappingURL=wrmRestApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrmRestApi.js","sourceRoot":"","sources":["../../src/wrm/wrmRestApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=wrmTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrmTypes.js","sourceRoot":"","sources":["../../src/wrm/wrmTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseXmlFromFile = exports.parseXmlContent = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const fast_xml_parser_1 = require("fast-xml-parser");
9
+ const fs_1 = require("fs");
10
+ const paths_1 = require("./paths");
11
+ const readFileContent = (filePath) => {
12
+ return fs_1.promises.readFile(filePath, { encoding: 'utf8' });
13
+ };
14
+ const parseXmlContent = (xmlContent) => {
15
+ const xmlParseOptions = {
16
+ arrayMode: true,
17
+ ignoreAttributes: false,
18
+ attrNodeName: 'attrs',
19
+ attributeNamePrefix: '',
20
+ };
21
+ let root;
22
+ try {
23
+ root = (0, fast_xml_parser_1.parse)(xmlContent, xmlParseOptions);
24
+ }
25
+ catch (error) {
26
+ return new Error(`Can't parse the XML content`);
27
+ }
28
+ return root;
29
+ };
30
+ exports.parseXmlContent = parseXmlContent;
31
+ async function parseXmlFromFile(filePath) {
32
+ let xmlContent;
33
+ try {
34
+ xmlContent = await readFileContent(filePath);
35
+ }
36
+ catch (e) {
37
+ return new Error(`Can't read the content of "${chalk_1.default.green((0, paths_1.getRelativePath)(filePath))}"`);
38
+ }
39
+ return (0, exports.parseXmlContent)(xmlContent);
40
+ }
41
+ exports.parseXmlFromFile = parseXmlFromFile;
42
+ //# sourceMappingURL=xmlParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmlParser.js","sourceRoot":"","sources":["../src/xmlParser.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,qDAAoD;AACpD,2BAAoC;AAEpC,mCAA0C;AAG1C,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC3C,OAAO,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,CAAC,UAAkB,EAA8B,EAAE;IAChF,MAAM,eAAe,GAAG;QACtB,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,OAAO;QACrB,mBAAmB,EAAE,EAAE;KACxB,CAAC;IAEF,IAAI,IAAwB,CAAC;IAC7B,IAAI;QACF,IAAI,GAAG,IAAA,uBAAQ,EAAC,UAAU,EAAE,eAAe,CAAC,CAAC;KAC9C;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KACjD;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAhBW,QAAA,eAAe,mBAgB1B;AAEK,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,IAAI,UAAkB,CAAC;IACvB,IAAI;QACF,UAAU,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;KAC9C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,IAAI,KAAK,CAAC,8BAA8B,eAAK,CAAC,KAAK,CAAC,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;KAC3F;IAED,OAAO,IAAA,uBAAe,EAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AATD,4CASC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAsyncHandler = void 0;
4
+ /**
5
+ * This function will wrap a yargs handler command with try/catch.
6
+ * The async will catch any error, display error message, and exist with error code
7
+ */
8
+ function getAsyncHandler(handler) {
9
+ return async function asyncHandler(options) {
10
+ try {
11
+ await handler(options);
12
+ process.exit(0);
13
+ }
14
+ catch (err) {
15
+ const error = err;
16
+ console.log(error.message);
17
+ process.exit(1);
18
+ }
19
+ };
20
+ }
21
+ exports.getAsyncHandler = getAsyncHandler;
22
+ //# sourceMappingURL=yargsHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yargsHelper.js","sourceRoot":"","sources":["../src/yargsHelper.ts"],"names":[],"mappings":";;;AAIA;;;GAGG;AACH,SAAgB,eAAe,CAAa,OAA4B;IACtE,OAAO,KAAK,UAAU,YAAY,CAAC,OAA8B;QAC/D,IAAI;YACF,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,GAAY,CAAC;YAE3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC,CAAC;AACJ,CAAC;AAZD,0CAYC"}
package/package.json ADDED
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "@atlassian/wrm-troubleshooting",
3
+ "version": "0.0.0-snapshot.0",
4
+ "author": "Atlassian Pty Ltd.",
5
+ "description": "A tool that can help you with troubleshooting the configuration of webpack and Atlassian P2 project.",
6
+ "keywords": [
7
+ "atlassian",
8
+ "webpack",
9
+ "wrm",
10
+ "p2",
11
+ "pom",
12
+ "web-resource",
13
+ "troubleshooting",
14
+ "webresource",
15
+ "bitbucket",
16
+ "jira",
17
+ "confluence",
18
+ "jsd"
19
+ ],
20
+ "license": "Apache-2.0",
21
+ "homepage": "https://bitbucket.org/atlassianlabs/fe-server",
22
+ "bugs": "https://ecosystem.atlassian.net/jira/software/c/projects/SPFE/issues/",
23
+ "main": "./bin/cli.js",
24
+ "bin": "./bin/cli.js",
25
+ "files": [
26
+ "dist",
27
+ "CODE_OF_CONDUCT.md",
28
+ "README.md",
29
+ "CHANGELOG.md"
30
+ ],
31
+ "scripts": {
32
+ "prepublishOnly": "npm run build",
33
+ "build": "tsc --project ./tsconfig.json",
34
+ "verify": "tsc --project tsconfig.all.json --noEmit",
35
+ "test": "jest",
36
+ "test:watch": "jest --watch",
37
+ "test:ci": "jest -ci"
38
+ },
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+ssh://git@bitbucket.org/atlassianlabs/fe-server.git",
42
+ "directory": "packages/wrm-troubleshooting"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public",
46
+ "registry": "https://registry.npmjs.org/",
47
+ "@atlassian:registry": "https://registry.npmjs.org/"
48
+ },
49
+ "dependencies": {
50
+ "@amplitude/node": "1.9.1",
51
+ "abort-controller": "3.0.0",
52
+ "chalk": "4.1.2",
53
+ "cli-truncate": "2.1.0",
54
+ "execa": "5.1.1",
55
+ "fast-xml-parser": "3.21.1",
56
+ "glob": "7.2.0",
57
+ "glob-promise": "4.2.2",
58
+ "inquirer": "8.2.0",
59
+ "inquirer-autocomplete-prompt": "1.4.0",
60
+ "lodash.get": "4.4.2",
61
+ "lookpath": "1.2.2",
62
+ "node-fetch": "2.6.11",
63
+ "semver": "7.3.5",
64
+ "terminal-link": "2.1.1",
65
+ "update-notifier": "5.1.0",
66
+ "valid-url": "1.0.9",
67
+ "yargs": "17.2.1"
68
+ },
69
+ "devDependencies": {
70
+ "@types/concat-stream": "1.6.1",
71
+ "@types/glob": "7.2.0",
72
+ "@types/inquirer": "8.1.3",
73
+ "@types/inquirer-autocomplete-prompt": "1.3.3",
74
+ "@types/jest": "27.4.0",
75
+ "@types/lodash.get": "4.4.6",
76
+ "@types/node": "16.11.11",
77
+ "@types/node-fetch": "2.5.12",
78
+ "@types/semver": "7.3.9",
79
+ "@types/update-notifier": "5.1.0",
80
+ "@types/valid-url": "1.0.3",
81
+ "@types/webpack": "5.28.0",
82
+ "@types/yargs": "17.0.4",
83
+ "atlassian-webresource-webpack-plugin": "^0.0.0-snapshot.0",
84
+ "concat-stream": "2.0.0",
85
+ "get-port": "5.1.1",
86
+ "jest": "27.4.3",
87
+ "mock-http-server": "1.4.5",
88
+ "typescript": "4.5.2",
89
+ "webpack": "5.90.3",
90
+ "webpack-cli": "4.9.1"
91
+ },
92
+ "//comment": "Everything should be bumped to 14+, but don't want to do it with this PR",
93
+ "engines": {
94
+ "node": ">=12.0.0"
95
+ },
96
+ "gitHead": "c201fc7caf8aeb31df5cfcc4757f129b922d1ea9"
97
+ }