@toolsplus/nx-forge 1.3.2 → 1.3.3
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/package.json +1 -1
- package/src/executors/build/executor.js +2 -2
- package/src/executors/build/executor.js.map +1 -1
- package/src/executors/build/lib/generate-package-json.d.ts +3 -1
- package/src/executors/build/lib/generate-package-json.js +104 -3
- package/src/executors/build/lib/generate-package-json.js.map +1 -1
package/package.json
CHANGED
|
@@ -51,10 +51,10 @@ function runExecutor(rawOptions, context) {
|
|
|
51
51
|
finally { if (e_1) throw e_1.error; }
|
|
52
52
|
}
|
|
53
53
|
(0, copy_forge_app_assets_1.copyForgeAppAssets)(options);
|
|
54
|
-
yield (0, process_custom_ui_dependencies_1.processCustomUIDependencies)(options, context);
|
|
54
|
+
const customUIResources = yield (0, process_custom_ui_dependencies_1.processCustomUIDependencies)(options, context);
|
|
55
55
|
yield (0, patch_manifest_yml_1.patchManifestYml)(options);
|
|
56
56
|
const projectGraph = yield readOrCreateProjectGraph();
|
|
57
|
-
(0, generate_package_json_1.generatePackageJson)(context.projectName, projectGraph, options);
|
|
57
|
+
(0, generate_package_json_1.generatePackageJson)(context.projectName, projectGraph, customUIResources, options);
|
|
58
58
|
console.log('Executor ran for build');
|
|
59
59
|
return {
|
|
60
60
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/forge/src/executors/build/executor.ts"],"names":[],"mappings":";;;AAEA,+DAA2D;AAC3D,yFAAmF;AACnF,iEAA4D;AAC5D,uEAAkE;AAClE,0EAAgF;AAChF,2DAAuD;AACvD,uEAAiE;AACjE,yCAAuD;AAEvD;;;GAGG;AACH,SAAe,wBAAwB;;QACrC,IAAI;YACF,OAAO,IAAA,sCAAsB,GAAE,CAAC;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAA,gCAAuB,GAAE,CAAC;SAClC;IACH,CAAC;CAAA;AAED,SAA8B,WAAW,CACvC,UAAgC,EAChC,OAAwB;;;QAExB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAE7E,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,8BAA8B,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,wBAAwB,CAAC,CAAC;SACjE;QAED,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAA,gCAAc,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;YAErD,KAA2B,IAAA,gBAAA,sBAAA,WAAW,CAAA,iBAAA;gBAA3B,MAAM,MAAM,wBAAA,CAAA;gBACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACnB,MAAM,IAAI,KAAK,CACb,uCAAuC,OAAO,CAAC,WAAW,GAAG,CAC9D,CAAC;iBACH;aACF;;;;;;;;;QAED,IAAA,0CAAkB,EAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,IAAA,4DAA2B,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/forge/src/executors/build/executor.ts"],"names":[],"mappings":";;;AAEA,+DAA2D;AAC3D,yFAAmF;AACnF,iEAA4D;AAC5D,uEAAkE;AAClE,0EAAgF;AAChF,2DAAuD;AACvD,uEAAiE;AACjE,yCAAuD;AAEvD;;;GAGG;AACH,SAAe,wBAAwB;;QACrC,IAAI;YACF,OAAO,IAAA,sCAAsB,GAAE,CAAC;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAA,gCAAuB,GAAE,CAAC;SAClC;IACH,CAAC;CAAA;AAED,SAA8B,WAAW,CACvC,UAAgC,EAChC,OAAwB;;;QAExB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAE7E,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,8BAA8B,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,wBAAwB,CAAC,CAAC;SACjE;QAED,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAA,gCAAc,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;YAErD,KAA2B,IAAA,gBAAA,sBAAA,WAAW,CAAA,iBAAA;gBAA3B,MAAM,MAAM,wBAAA,CAAA;gBACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACnB,MAAM,IAAI,KAAK,CACb,uCAAuC,OAAO,CAAC,WAAW,GAAG,CAC9D,CAAC;iBACH;aACF;;;;;;;;;QAED,IAAA,0CAAkB,EAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,iBAAiB,GAAG,MAAM,IAAA,4DAA2B,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,IAAA,qCAAgB,EAAC,OAAO,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,MAAM,wBAAwB,EAAE,CAAC;QACtD,IAAA,2CAAmB,EACjB,OAAO,CAAC,WAAW,EACnB,YAAY,EACZ,iBAAiB,EACjB,OAAO,CACR,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;;CACH;AAxCD,8BAwCC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { ProjectGraph } from '@nrwl/devkit';
|
|
2
2
|
import { NormalizedOptions } from '../schema';
|
|
3
|
+
import { Resources } from '@forge/manifest';
|
|
3
4
|
/**
|
|
4
5
|
* Merges the existing package.json details with a generated package.json that includes
|
|
5
6
|
* all required dependencies.
|
|
6
7
|
*
|
|
7
8
|
* @param projectName Name of the project
|
|
8
9
|
* @param graph Graph associated with the project
|
|
10
|
+
* @param customUIResources Configured Custom UI resources
|
|
9
11
|
* @param options Builder options
|
|
10
12
|
*/
|
|
11
|
-
export declare function generatePackageJson(projectName: string, graph: ProjectGraph, options: NormalizedOptions): void;
|
|
13
|
+
export declare function generatePackageJson(projectName: string, graph: ProjectGraph, customUIResources: Resources, options: NormalizedOptions): void;
|
|
@@ -2,21 +2,122 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generatePackageJson = void 0;
|
|
4
4
|
const devkit_1 = require("@nrwl/devkit");
|
|
5
|
-
const
|
|
5
|
+
const object_sort_1 = require("nx/src/utils/object-sort");
|
|
6
6
|
/**
|
|
7
7
|
* Merges the existing package.json details with a generated package.json that includes
|
|
8
8
|
* all required dependencies.
|
|
9
9
|
*
|
|
10
10
|
* @param projectName Name of the project
|
|
11
11
|
* @param graph Graph associated with the project
|
|
12
|
+
* @param customUIResources Configured Custom UI resources
|
|
12
13
|
* @param options Builder options
|
|
13
14
|
*/
|
|
14
|
-
function generatePackageJson(projectName, graph, options) {
|
|
15
|
+
function generatePackageJson(projectName, graph, customUIResources, options) {
|
|
15
16
|
var _a;
|
|
16
|
-
const packageJson =
|
|
17
|
+
const packageJson = createPackageJson(projectName, graph, customUIResources, options);
|
|
17
18
|
packageJson.main = (_a = packageJson.main) !== null && _a !== void 0 ? _a : options.outputFileName;
|
|
18
19
|
delete packageJson.devDependencies;
|
|
19
20
|
(0, devkit_1.writeJsonFile)(`${options.outputPath}/package.json`, packageJson);
|
|
20
21
|
}
|
|
21
22
|
exports.generatePackageJson = generatePackageJson;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a package.json in the output directory for support to install dependencies within containers.
|
|
25
|
+
*
|
|
26
|
+
* If a package.json exists in the project, it will reuse that.
|
|
27
|
+
*
|
|
28
|
+
* Initial implementation copied from `create-package.json.ts` in Nx 15.2.4 linked below. The implementation is
|
|
29
|
+
* modified to not include dependencies from Custom UI projects marked as implicit dependencies.
|
|
30
|
+
*
|
|
31
|
+
* @see https://github.com/nrwl/nx/blob/15.2.4/packages/workspace/src/utilities/create-package-json.ts
|
|
32
|
+
*/
|
|
33
|
+
function createPackageJson(projectName, graph, customUIResources, options) {
|
|
34
|
+
const customUIProjectNames = customUIResources.map((r) => r.path);
|
|
35
|
+
const npmDeps = findAllNpmDeps(projectName, graph, customUIProjectNames);
|
|
36
|
+
// default package.json if one does not exist
|
|
37
|
+
let packageJson = {
|
|
38
|
+
name: projectName,
|
|
39
|
+
version: '0.0.1',
|
|
40
|
+
dependencies: {},
|
|
41
|
+
devDependencies: {},
|
|
42
|
+
};
|
|
43
|
+
try {
|
|
44
|
+
packageJson = (0, devkit_1.readJsonFile)(`${options.projectRoot}/package.json`);
|
|
45
|
+
if (!packageJson.dependencies) {
|
|
46
|
+
packageJson.dependencies = {};
|
|
47
|
+
}
|
|
48
|
+
if (!packageJson.devDependencies) {
|
|
49
|
+
packageJson.devDependencies = {};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
// do nothing
|
|
54
|
+
}
|
|
55
|
+
const rootPackageJson = (0, devkit_1.readJsonFile)(`${options.root}/package.json`);
|
|
56
|
+
Object.entries(npmDeps).forEach(([packageName, version]) => {
|
|
57
|
+
var _a;
|
|
58
|
+
if (((_a = rootPackageJson.devDependencies) === null || _a === void 0 ? void 0 : _a[packageName]) &&
|
|
59
|
+
!packageJson.dependencies[packageName]) {
|
|
60
|
+
packageJson.devDependencies[packageName] = version;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
packageJson.dependencies[packageName] = version;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
packageJson.devDependencies && (packageJson.devDependencies = (0, object_sort_1.sortObjectByKeys)(packageJson.devDependencies));
|
|
67
|
+
packageJson.dependencies && (packageJson.dependencies = (0, object_sort_1.sortObjectByKeys)(packageJson.dependencies));
|
|
68
|
+
return packageJson;
|
|
69
|
+
}
|
|
70
|
+
function findAllNpmDeps(projectName, graph, customUIProjectNames, list = {}, seen = new Set()) {
|
|
71
|
+
var _a;
|
|
72
|
+
if (seen.has(projectName)) {
|
|
73
|
+
return list;
|
|
74
|
+
}
|
|
75
|
+
seen.add(projectName);
|
|
76
|
+
const node = graph.externalNodes[projectName];
|
|
77
|
+
if (node) {
|
|
78
|
+
list[node.data.packageName] = node.data.version;
|
|
79
|
+
recursivelyCollectPeerDependencies(node.name, graph, list);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// we are not interested in the dependencies of external projects
|
|
83
|
+
(_a = graph.dependencies[projectName]) === null || _a === void 0 ? void 0 : _a.forEach((dep) => {
|
|
84
|
+
// Only include dependencies if they are either not implicit, or if it is not a Custom UI project
|
|
85
|
+
if (dep.type !== devkit_1.DependencyType.implicit ||
|
|
86
|
+
!customUIProjectNames.includes(dep.target)) {
|
|
87
|
+
findAllNpmDeps(dep.target, graph, customUIProjectNames, list, seen);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return list;
|
|
92
|
+
}
|
|
93
|
+
function recursivelyCollectPeerDependencies(projectName, graph, list = {}, seen = new Set()) {
|
|
94
|
+
const npmPackage = graph.externalNodes[projectName];
|
|
95
|
+
if (!npmPackage || seen.has(projectName)) {
|
|
96
|
+
return list;
|
|
97
|
+
}
|
|
98
|
+
seen.add(projectName);
|
|
99
|
+
const packageName = npmPackage.data.packageName;
|
|
100
|
+
try {
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
102
|
+
const packageJson = require(`${packageName}/package.json`);
|
|
103
|
+
if (!packageJson.peerDependencies) {
|
|
104
|
+
return list;
|
|
105
|
+
}
|
|
106
|
+
Object.keys(packageJson.peerDependencies)
|
|
107
|
+
.map((dependencyName) => `npm:${dependencyName}`)
|
|
108
|
+
.map((dependency) => graph.externalNodes[dependency])
|
|
109
|
+
.filter(Boolean)
|
|
110
|
+
.forEach((node) => {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
if (!((_b = (_a = packageJson.peerDependenciesMeta) === null || _a === void 0 ? void 0 : _a[node.data.packageName]) === null || _b === void 0 ? void 0 : _b.optional)) {
|
|
113
|
+
list[node.data.packageName] = node.data.version;
|
|
114
|
+
recursivelyCollectPeerDependencies(node.name, graph, list, seen);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
return list;
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
return list;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
22
123
|
//# sourceMappingURL=generate-package-json.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-package-json.js","sourceRoot":"","sources":["../../../../../../../packages/forge/src/executors/build/lib/generate-package-json.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"generate-package-json.js","sourceRoot":"","sources":["../../../../../../../packages/forge/src/executors/build/lib/generate-package-json.ts"],"names":[],"mappings":"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"}
|