@toolsplus/nx-forge 4.0.1 → 4.2.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.
- package/package.json +3 -2
- package/src/executors/build/executor.js +4 -4
- package/src/executors/build/executor.js.map +1 -1
- package/src/executors/build/lib/patch-manifest-yml.d.ts +5 -3
- package/src/executors/build/lib/patch-manifest-yml.js +110 -7
- package/src/executors/build/lib/patch-manifest-yml.js.map +1 -1
- package/src/executors/build/lib/{process-custom-ui-dependencies.d.ts → process-resource-dependencies.d.ts} +5 -3
- package/src/executors/build/lib/{process-custom-ui-dependencies.js → process-resource-dependencies.js} +21 -21
- package/src/executors/build/lib/process-resource-dependencies.js.map +1 -0
- package/src/executors/build/schema.d.ts +1 -0
- package/src/executors/build/schema.json +5 -0
- package/src/executors/deploy/executor.d.ts +2 -1
- package/src/executors/deploy/executor.js +16 -1
- package/src/executors/deploy/executor.js.map +1 -1
- package/src/executors/deploy/lib/transform-manifest-yml.d.ts +5 -0
- package/src/executors/deploy/lib/transform-manifest-yml.js +27 -0
- package/src/executors/deploy/lib/transform-manifest-yml.js.map +1 -0
- package/src/executors/deploy/schema.d.ts +1 -0
- package/src/executors/deploy/schema.json +4 -0
- package/src/executors/package/executor.js +4 -4
- package/src/executors/package/executor.js.map +1 -1
- package/src/executors/package/schema.d.ts +1 -0
- package/src/executors/package/schema.json +5 -0
- package/src/utils/forge/manifest-yml.d.ts +2 -1
- package/src/utils/forge/manifest-yml.js +23 -18
- package/src/utils/forge/manifest-yml.js.map +1 -1
- package/src/executors/build/lib/process-custom-ui-dependencies.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toolsplus/nx-forge",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"description": "Atlassian Forge plugin for Nx",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"typings": "./src/index.d.ts",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"nx": "^18.0.0"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@forge/manifest": "^
|
|
13
|
+
"@forge/manifest": "^6.1.0",
|
|
14
14
|
"@nx/devkit": "18.0.6",
|
|
15
15
|
"@nx/eslint": "18.0.6",
|
|
16
16
|
"@nx/jest": "18.0.6",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"@nx/webpack": "18.0.6",
|
|
19
19
|
"fs-extra": "^10.0.1",
|
|
20
20
|
"js-yaml": "^4.1.0",
|
|
21
|
+
"jsonata": "^2.0.4",
|
|
21
22
|
"tslib": "^2.3.0"
|
|
22
23
|
},
|
|
23
24
|
"type": "commonjs",
|
|
@@ -4,7 +4,7 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const node_fs_1 = require("node:fs");
|
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
|
6
6
|
const normalize_options_1 = require("./lib/normalize-options");
|
|
7
|
-
const
|
|
7
|
+
const process_resource_dependencies_1 = require("./lib/process-resource-dependencies");
|
|
8
8
|
const patch_manifest_yml_1 = require("./lib/patch-manifest-yml");
|
|
9
9
|
const generate_package_json_1 = require("./lib/generate-package-json");
|
|
10
10
|
const compile_webpack_1 = require("./lib/compile-webpack");
|
|
@@ -49,9 +49,9 @@ function runExecutor(rawOptions, context) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
(0, copy_forge_app_assets_1.copyForgeAppAssets)(options);
|
|
52
|
-
const
|
|
53
|
-
yield (0, patch_manifest_yml_1.patchManifestYml)(options);
|
|
54
|
-
(0, generate_package_json_1.generatePackageJson)(context.projectName, context.projectGraph,
|
|
52
|
+
const resources = yield (0, process_resource_dependencies_1.processResourceDependencies)(Object.assign(Object.assign({}, options), { resourcePath: options.customUIPath }), context);
|
|
53
|
+
yield (0, patch_manifest_yml_1.patchManifestYml)(Object.assign(Object.assign({}, options), { resourcePath: options.customUIPath }));
|
|
54
|
+
(0, generate_package_json_1.generatePackageJson)(context.projectName, context.projectGraph, resources, options);
|
|
55
55
|
devkit_1.logger.info('Executor ran for build');
|
|
56
56
|
return {
|
|
57
57
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/executors/build/executor.ts"],"names":[],"mappings":";;;AAAA,qCAA6C;AAE7C,uCAAoC;AAEpC,+DAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/executors/build/executor.ts"],"names":[],"mappings":";;;AAAA,qCAA6C;AAE7C,uCAAoC;AAEpC,+DAA2D;AAC3D,uFAAkF;AAClF,iEAA4D;AAC5D,uEAAkE;AAClE,2DAAuD;AACvD,uEAAiE;AAEjE,SAAS,UAAU,CAAC,IAAc;IAChC,IAAI,CAAC;QACH,OAAO,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAA8B,WAAW,CACvC,UAAgC,EAChC,OAAwB;;;QAExB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GACxB,OAAO,CAAC,sBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAY,CAAC,CAAC;QAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,8BAA8B,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,wBAAwB,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAE7E,IAAI,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,eAAe,CAAC,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,IAAA,gCAAc,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;gBACrD,KAA2B,eAAA,gBAAA,sBAAA,WAAW,CAAA,iBAAA,2FAAE,CAAC;oBAAd,2BAAW;oBAAX,WAAW;oBAA3B,MAAM,MAAM,KAAA,CAAA;oBACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,MAAM,IAAI,KAAK,CACb,uCAAuC,OAAO,CAAC,WAAW,GAAG,CAC9D,CAAC;oBACJ,CAAC;gBACH,CAAC;;;;;;;;;QACH,CAAC;QAED,IAAA,0CAAkB,EAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAA,2DAA2B,kCAC5C,OAAO,KAAE,YAAY,EAAE,OAAO,CAAC,YAAY,KAChD,OAAO,CACR,CAAC;QACF,MAAM,IAAA,qCAAgB,kCAAM,OAAO,KAAE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAG,CAAC;QAC3E,IAAA,2CAAmB,EACjB,OAAO,CAAC,WAAY,EACpB,OAAO,CAAC,YAAa,EACrB,SAAS,EACT,OAAO,CACR,CAAC;QAEF,eAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;;CACH;AA9CD,8BA8CC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { NormalizedOptions } from '../schema';
|
|
2
|
-
type Options = Pick<NormalizedOptions, 'root' | 'outputPath' | '
|
|
2
|
+
type Options = Pick<NormalizedOptions, 'root' | 'outputPath' | 'uiKit2Packaging'> & {
|
|
3
|
+
resourcePath: string;
|
|
4
|
+
};
|
|
3
5
|
/**
|
|
4
|
-
* Patches the output manifest.yml file to replace resource path parameters to point to the actual
|
|
6
|
+
* Patches the output manifest.yml file to replace resource path parameters to point to the actual resource build
|
|
5
7
|
* artifacts instead of the Nx project reference.
|
|
6
8
|
*
|
|
7
|
-
* This assumes that
|
|
9
|
+
* This assumes that resource artifacts have already been copied to the output directory in a previous step.
|
|
8
10
|
*
|
|
9
11
|
* @param options Executor options
|
|
10
12
|
*/
|
|
@@ -5,27 +5,130 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const devkit_1 = require("@nx/devkit");
|
|
7
7
|
const manifest_yml_1 = require("../../../utils/forge/manifest-yml");
|
|
8
|
+
const fs_1 = require("fs");
|
|
8
9
|
/**
|
|
9
|
-
* Patches the output manifest.yml file to replace resource path parameters to point to the actual
|
|
10
|
+
* Patches the output manifest.yml file to replace resource path parameters to point to the actual resource build
|
|
10
11
|
* artifacts instead of the Nx project reference.
|
|
11
12
|
*
|
|
12
|
-
* This assumes that
|
|
13
|
+
* This assumes that resource artifacts have already been copied to the output directory in a previous step.
|
|
13
14
|
*
|
|
14
15
|
* @param options Executor options
|
|
15
16
|
*/
|
|
16
17
|
function patchManifestYml(options) {
|
|
17
18
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
const
|
|
19
|
+
const absoluteOutputPath = (0, path_1.resolve)(options.root, options.outputPath);
|
|
20
|
+
const manifestPath = (0, devkit_1.joinPathFragments)(absoluteOutputPath, 'manifest.yml');
|
|
19
21
|
devkit_1.logger.info(`Patching ${manifestPath}...`);
|
|
20
22
|
const manifestSchema = yield (0, manifest_yml_1.readManifestYml)(manifestPath);
|
|
21
|
-
const
|
|
22
|
-
const patchedManifest = Object.assign(Object.assign({}, manifestSchema), { resources: resources.map((r) => patchResource(options.customUIPath, r)) });
|
|
23
|
+
const patchedManifest = patchManifestInternal(absoluteOutputPath, manifestSchema, options);
|
|
23
24
|
(0, manifest_yml_1.writeManifestYml)(manifestPath, patchedManifest);
|
|
24
25
|
devkit_1.logger.info(`Done patching ${manifestPath}.`);
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
exports.patchManifestYml = patchManifestYml;
|
|
28
|
-
function
|
|
29
|
-
|
|
29
|
+
function patchManifestInternal(absoluteOutputPath, manifestSchema, options) {
|
|
30
|
+
var _a;
|
|
31
|
+
const resources = manifestSchema.resources || [];
|
|
32
|
+
if (!options.uiKit2Packaging) {
|
|
33
|
+
return Object.assign(Object.assign({}, manifestSchema), { resources: resources.map((resource) => (Object.assign(Object.assign({}, resource), { path: `${options.resourcePath}/${resource.path}` }))) });
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const resourceTypeIndex = getResourceTypeIndex((_a = manifestSchema.modules) !== null && _a !== void 0 ? _a : {}, resources);
|
|
37
|
+
return Object.assign(Object.assign({}, manifestSchema), { resources: resources.map((r) => patchResource(options.resourcePath, r, absoluteOutputPath, resourceTypeIndex[r.key])) });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Computes an index from resource key to resource type which is either UI Kit 2 or Custom UI. The resource type
|
|
42
|
+
* is inferred from the module declaration. If a module has both the `resource` property and `render: native` declared,
|
|
43
|
+
* it means its resource has to be of type UI Kit 2. If a module, on the other hand, only declares the `resource`
|
|
44
|
+
* property, it means the resource must be a Custom UI.
|
|
45
|
+
*
|
|
46
|
+
* @param modules Modules declared in the manifest
|
|
47
|
+
* @param resources Resources declared in the manifest
|
|
48
|
+
*/
|
|
49
|
+
function getResourceTypeIndex(modules, resources) {
|
|
50
|
+
const modulesEntries = Object.entries(modules);
|
|
51
|
+
const resourceKeys = resources.map((r) => r.key);
|
|
52
|
+
const indexModuleDefinition = (acc, moduleType, moduleDefinition) => {
|
|
53
|
+
var _a;
|
|
54
|
+
const moduleResourceKey = moduleDefinition['resource'];
|
|
55
|
+
if (resourceKeys.includes(moduleResourceKey)) {
|
|
56
|
+
const type = moduleDefinition['render'] === 'native' ? 'ui-kit-2' : 'custom-ui';
|
|
57
|
+
const existingIndexEntry = acc[moduleResourceKey];
|
|
58
|
+
if (existingIndexEntry && existingIndexEntry.type !== type) {
|
|
59
|
+
devkit_1.logger.warn(`Inconsistent resource mapping in manifest.yml: Module ${moduleType} (${moduleDefinition['key']}) declares its resource to be of type ${type} but other modules with keys [${existingIndexEntry.modules
|
|
60
|
+
.map(([, m]) => m['key'])
|
|
61
|
+
.join(', ')}] pointing to the same resource appear to be of a different type`);
|
|
62
|
+
}
|
|
63
|
+
const existingModules = (_a = existingIndexEntry === null || existingIndexEntry === void 0 ? void 0 : existingIndexEntry.modules) !== null && _a !== void 0 ? _a : [];
|
|
64
|
+
return Object.assign(Object.assign({}, acc), { [moduleResourceKey]: {
|
|
65
|
+
type,
|
|
66
|
+
modules: [...existingModules, [moduleType, moduleDefinition]],
|
|
67
|
+
} });
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return acc;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const resourceTypeIndex = modulesEntries.reduce((acc, [moduleType, moduleDefinitions]) => {
|
|
74
|
+
return moduleDefinitions.reduce((innerAcc, moduleDefinition) => indexModuleDefinition(innerAcc, moduleType, moduleDefinition), acc);
|
|
75
|
+
}, {});
|
|
76
|
+
const resourceTypeIndexKeySet = new Set(Object.keys(resourceTypeIndex));
|
|
77
|
+
const resourceKeySet = new Set(resourceKeys);
|
|
78
|
+
if (resourceTypeIndexKeySet.size === resourceKeySet.size &&
|
|
79
|
+
[...resourceTypeIndexKeySet].every((k) => resourceKeySet.has(k))) {
|
|
80
|
+
return resourceTypeIndex;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const missingResourceKeys = [...resourceKeySet].filter((k) => !resourceTypeIndexKeySet.has(k));
|
|
84
|
+
devkit_1.logger.warn(`Failed to find module definition for resources with keys ${missingResourceKeys}`);
|
|
85
|
+
return resourceTypeIndex;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns the final resource path based on the given resource type.
|
|
90
|
+
*
|
|
91
|
+
* Verifies that the path/file exists in the computed directory. UI Kit 2 builds are expected to produce an accepted
|
|
92
|
+
* bundle filename.
|
|
93
|
+
*
|
|
94
|
+
* @param resourcePath Path where all resource build artifacts are placed, relative to the app root directory
|
|
95
|
+
* @param resourceType Type of the given resource, `ui-kit-2` or `custom-ui`
|
|
96
|
+
* @param resource Resource to process
|
|
97
|
+
* @param absoluteOutputPath Absolute project output path
|
|
98
|
+
*/
|
|
99
|
+
function getVerifiedResourcePath(resourcePath, resourceType, resource, absoluteOutputPath) {
|
|
100
|
+
const resourceProjectName = resource.path;
|
|
101
|
+
const relativeResourcePath = (0, path_1.join)(resourcePath, resourceProjectName);
|
|
102
|
+
const absoluteResourcePath = (0, path_1.join)(absoluteOutputPath, relativeResourcePath);
|
|
103
|
+
if (!(0, fs_1.existsSync)(absoluteResourcePath)) {
|
|
104
|
+
throw new Error(`Failed to patch resource with key '${resource.key}': No resource artifacts found in ${absoluteOutputPath}. Did you forget to build the resource?`);
|
|
105
|
+
}
|
|
106
|
+
if (resourceType === 'custom-ui') {
|
|
107
|
+
devkit_1.logger.info(`Detected resource '${resource.key}' as Custom UI dependency`);
|
|
108
|
+
return relativeResourcePath;
|
|
109
|
+
}
|
|
110
|
+
devkit_1.logger.info(`Detected resource '${resource.key}' as UI Kit 2 dependency`);
|
|
111
|
+
const acceptedUiKit2EntryPoints = [
|
|
112
|
+
'index.js',
|
|
113
|
+
'index.jsx',
|
|
114
|
+
'main.js',
|
|
115
|
+
'main.jsx',
|
|
116
|
+
];
|
|
117
|
+
const entryPointFile = acceptedUiKit2EntryPoints.find((entryPointFile) => (0, fs_1.existsSync)((0, path_1.join)(absoluteResourcePath, entryPointFile)));
|
|
118
|
+
if (entryPointFile) {
|
|
119
|
+
return `${relativeResourcePath}/${entryPointFile}`;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
throw new Error(`Failed to patch resource with key '${resource.key}': Could not find entry point file in ${absoluteResourcePath}. Make sure the UI Kit 2 build produces a files with one of these names: [${acceptedUiKit2EntryPoints.join(',')}]`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function patchResource(resourcePath, resource, absoluteOutputPath, resourceContext) {
|
|
126
|
+
devkit_1.logger.info(`Patching resource with key '${resource.key}'...`);
|
|
127
|
+
if (!resourceContext) {
|
|
128
|
+
devkit_1.logger.warn(`Resource with key '${resource.key}' appears not to be used by any module. Skip patching.`);
|
|
129
|
+
return resource;
|
|
130
|
+
}
|
|
131
|
+
const verifiedResourcePath = getVerifiedResourcePath(resourcePath, resourceContext.type, resource, absoluteOutputPath);
|
|
132
|
+
return Object.assign(Object.assign({}, resource), { path: verifiedResourcePath });
|
|
30
133
|
}
|
|
31
134
|
//# sourceMappingURL=patch-manifest-yml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-manifest-yml.js","sourceRoot":"","sources":["../../../../../../../packages/nx-forge/src/executors/build/lib/patch-manifest-yml.ts"],"names":[],"mappings":";;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"patch-manifest-yml.js","sourceRoot":"","sources":["../../../../../../../packages/nx-forge/src/executors/build/lib/patch-manifest-yml.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { ExecutorContext } from '@nx/devkit';
|
|
2
2
|
import { Resources } from '@forge/manifest';
|
|
3
3
|
import { NormalizedOptions } from '../schema';
|
|
4
|
-
type Options = Pick<NormalizedOptions, 'root' | 'outputPath' | '
|
|
4
|
+
type Options = Pick<NormalizedOptions, 'root' | 'outputPath' | 'resourceOutputPathMap'> & {
|
|
5
|
+
resourcePath: string;
|
|
6
|
+
};
|
|
5
7
|
/**
|
|
6
|
-
* Verifies that
|
|
8
|
+
* Verifies that resource projects are correctly linked to the Nx Forge app and copies build artifacts into the app's
|
|
7
9
|
* output directory. In particular, this will make sure that each resource listed in the manifest.yml has its path
|
|
8
10
|
* configured to point to a Nx project in this workspace.
|
|
9
11
|
*
|
|
10
12
|
* @param options Executor options
|
|
11
13
|
* @param context Executor context
|
|
12
14
|
*/
|
|
13
|
-
export declare function
|
|
15
|
+
export declare function processResourceDependencies(options: Options, context: ExecutorContext): Promise<Resources>;
|
|
14
16
|
export {};
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.processResourceDependencies = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const fs_extra_1 = require("fs-extra");
|
|
6
6
|
const fs_1 = require("fs");
|
|
7
7
|
const devkit_1 = require("@nx/devkit");
|
|
8
8
|
const manifest_yml_1 = require("../../../utils/forge/manifest-yml");
|
|
9
9
|
/**
|
|
10
|
-
* Verifies that
|
|
10
|
+
* Verifies that resource projects are correctly linked to the Nx Forge app and copies build artifacts into the app's
|
|
11
11
|
* output directory. In particular, this will make sure that each resource listed in the manifest.yml has its path
|
|
12
12
|
* configured to point to a Nx project in this workspace.
|
|
13
13
|
*
|
|
14
14
|
* @param options Executor options
|
|
15
15
|
* @param context Executor context
|
|
16
16
|
*/
|
|
17
|
-
function
|
|
17
|
+
function processResourceDependencies(options, context) {
|
|
18
18
|
var _a;
|
|
19
19
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
20
|
const manifestPath = (0, devkit_1.joinPathFragments)(context.root, context.projectsConfigurations.projects[context.projectName].root, 'manifest.yml');
|
|
21
21
|
const manifestSchema = yield (0, manifest_yml_1.readManifestYml)(manifestPath);
|
|
22
22
|
const resources = (_a = manifestSchema.resources) !== null && _a !== void 0 ? _a : [];
|
|
23
|
-
resources.forEach((r) =>
|
|
23
|
+
resources.forEach((r) => verifyAndCopyResourceDependency(r, context, options));
|
|
24
24
|
return resources;
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
exports.
|
|
27
|
+
exports.processResourceDependencies = processResourceDependencies;
|
|
28
28
|
const getResourceOutputPath = (options, resourceProjectGraphNode, configurationName) => {
|
|
29
29
|
var _a, _b;
|
|
30
30
|
const resourceProjectName = resourceProjectGraphNode.data.name;
|
|
@@ -48,22 +48,22 @@ const getResourceOutputPath = (options, resourceProjectGraphNode, configurationN
|
|
|
48
48
|
}
|
|
49
49
|
throw new Error(`Failed to infer output path for resource project '${resourceProjectName}': Try to define an explicit output path mapping using the 'resourceOutputPathMap' option of this executor. Add an entry to the mapping object as follows: {'${resourceProjectName}': '<replace-with-project-output-path>'}.`);
|
|
50
50
|
};
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
if (!
|
|
56
|
-
throw new Error(`Nx workspace is missing project for
|
|
51
|
+
const verifyAndCopyResourceDependency = (resource, context, options) => {
|
|
52
|
+
const resourceProjectName = resource.path;
|
|
53
|
+
const resourceProjectGraphNode = context.projectGraph.nodes[resourceProjectName];
|
|
54
|
+
const resourceProjectConfiguration = resourceProjectGraphNode === null || resourceProjectGraphNode === void 0 ? void 0 : resourceProjectGraphNode.data;
|
|
55
|
+
if (!resourceProjectGraphNode || !resourceProjectConfiguration) {
|
|
56
|
+
throw new Error(`Nx workspace is missing project for resource path ${resourceProjectName}. Make sure the resource path references a project in your Nx workspace.`);
|
|
57
57
|
}
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
if (!
|
|
61
|
-
!(0, fs_1.existsSync)(
|
|
62
|
-
(0, fs_1.readdirSync)(
|
|
63
|
-
throw new Error(`Project ${
|
|
58
|
+
const resourceBuildTargetOutputPath = getResourceOutputPath(options, resourceProjectGraphNode, context.configurationName);
|
|
59
|
+
const absoluteResourceBuildTargetOutputPath = (0, devkit_1.joinPathFragments)(context.root, resourceBuildTargetOutputPath);
|
|
60
|
+
if (!resourceBuildTargetOutputPath ||
|
|
61
|
+
!(0, fs_1.existsSync)(absoluteResourceBuildTargetOutputPath) ||
|
|
62
|
+
(0, fs_1.readdirSync)(absoluteResourceBuildTargetOutputPath).length === 0) {
|
|
63
|
+
throw new Error(`Project ${resourceProjectName} has no build artifacts in output directory '${resourceBuildTargetOutputPath}'. Make sure the project produces compatible build artifacts.`);
|
|
64
64
|
}
|
|
65
|
-
devkit_1.logger.info(`Copying ${
|
|
66
|
-
(0, fs_extra_1.copySync)(
|
|
67
|
-
devkit_1.logger.info(`Done copying ${
|
|
65
|
+
devkit_1.logger.info(`Copying ${resourceProjectName} resource build artifacts...`);
|
|
66
|
+
(0, fs_extra_1.copySync)(absoluteResourceBuildTargetOutputPath, (0, devkit_1.joinPathFragments)(options.root, options.outputPath, options.resourcePath, resourceProjectName), { recursive: true });
|
|
67
|
+
devkit_1.logger.info(`Done copying ${resourceProjectName} resource build artifacts.`);
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=process-
|
|
69
|
+
//# sourceMappingURL=process-resource-dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-resource-dependencies.js","sourceRoot":"","sources":["../../../../../../../packages/nx-forge/src/executors/build/lib/process-resource-dependencies.ts"],"names":[],"mappings":";;;;AAAA,uCAAoC;AACpC,2BAA6C;AAC7C,uCAMoB;AAIpB,oEAAoE;AASpE;;;;;;;GAOG;AACH,SAAsB,2BAA2B,CAC/C,OAAgB,EAChB,OAAwB;;;QAExB,MAAM,YAAY,GAAG,IAAA,0BAAiB,EACpC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EACjE,cAAc,CACf,CAAC;QACF,MAAM,cAAc,GAAG,MAAM,IAAA,8BAAe,EAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAA,cAAc,CAAC,SAAS,mCAAI,EAAE,CAAC;QAEjD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACtB,+BAA+B,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CACrD,CAAC;QAEF,OAAO,SAAS,CAAC;;CAClB;AAjBD,kEAiBC;AAED,MAAM,qBAAqB,GAAG,CAC5B,OAAgB,EAChB,wBAAiD,EACjD,iBAA0B,EAC1B,EAAE;;IACF,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/D,MAAM,uBAAuB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IACrD,IACE,uBAAuB;QACvB,OAAO,uBAAuB,KAAK,QAAQ;QAC3C,uBAAuB,KAAK,EAAE,EAC9B,CAAC;QACD,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,MAAM,gCAAgC,GACpC,MAAA,MAAA,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0CAAE,OAAO,0CAAE,UAAU,CAAC;IACtE,IAAI,gCAAgC,EAAE,CAAC;QACrC,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,qBAAqB,EAAE,GAAG,sBAAsB,CAAC,GACtD,IAAA,4CAAmC,EACjC;QACE,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,iBAAiB;KACjC,EACD,EAAE,EACF,wBAAwB,CACzB,CAAC;IAEJ,IAAI,qBAAqB,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,MAAM,IAAI,KAAK,CACb,qDAAqD,mBAAmB,gKAAgK,mBAAmB,2CAA2C,CACvS,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,CACtC,QAA+B,EAC/B,OAAwB,EACxB,OAAgB,EACV,EAAE;IACR,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC1C,MAAM,wBAAwB,GAC5B,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,4BAA4B,GAAG,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,IAAI,CAAC;IAEpE,IAAI,CAAC,wBAAwB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,qDAAqD,mBAAmB,0EAA0E,CACnJ,CAAC;IACJ,CAAC;IAED,MAAM,6BAA6B,GAAG,qBAAqB,CACzD,OAAO,EACP,wBAAwB,EACxB,OAAO,CAAC,iBAAiB,CAC1B,CAAC;IACF,MAAM,qCAAqC,GAAG,IAAA,0BAAiB,EAC7D,OAAO,CAAC,IAAI,EACZ,6BAA6B,CAC9B,CAAC;IAEF,IACE,CAAC,6BAA6B;QAC9B,CAAC,IAAA,eAAU,EAAC,qCAAqC,CAAC;QAClD,IAAA,gBAAW,EAAC,qCAAqC,CAAC,CAAC,MAAM,KAAK,CAAC,EAC/D,CAAC;QACD,MAAM,IAAI,KAAK,CACb,WAAW,mBAAmB,gDAAgD,6BAA6B,+DAA+D,CAC3K,CAAC;IACJ,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,WAAW,mBAAmB,8BAA8B,CAAC,CAAC;IAC1E,IAAA,mBAAQ,EACN,qCAAqC,EACrC,IAAA,0BAAiB,EACf,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,YAAY,EACpB,mBAAmB,CACpB,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;IACF,eAAM,CAAC,IAAI,CAAC,gBAAgB,mBAAmB,4BAA4B,CAAC,CAAC;AAC/E,CAAC,CAAC"}
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
"x-completion-type": "file",
|
|
42
42
|
"x-completion-glob": "webpack?(*)@(.js|.ts)",
|
|
43
43
|
"x-priority": "important"
|
|
44
|
+
},
|
|
45
|
+
"uiKit2Packaging": {
|
|
46
|
+
"type": "boolean",
|
|
47
|
+
"description": "Enables UI Kit 2 compatible packaging.",
|
|
48
|
+
"default": false
|
|
44
49
|
}
|
|
45
50
|
},
|
|
46
51
|
"required": ["outputPath"]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { ExecutorContext } from '@nx/devkit';
|
|
1
2
|
import { DeployExecutorOptions } from './schema';
|
|
2
|
-
export default function runExecutor(
|
|
3
|
+
export default function runExecutor(rawOptions: DeployExecutorOptions, context: ExecutorContext): Promise<{
|
|
3
4
|
success: boolean;
|
|
4
5
|
}>;
|
|
@@ -3,8 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const async_commands_1 = require("../../utils/forge/async-commands");
|
|
6
|
-
|
|
6
|
+
const transform_manifest_yml_1 = require("./lib/transform-manifest-yml");
|
|
7
|
+
const normalizeOptions = (options, context) => {
|
|
8
|
+
const isEnvironmentName = (c) => ['development', 'staging', 'production'].includes(c);
|
|
9
|
+
if (isEnvironmentName(context.configurationName)) {
|
|
10
|
+
return Object.assign(Object.assign({}, options), { environment: context.configurationName });
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return options;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
function runExecutor(rawOptions, context) {
|
|
7
17
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
const options = normalizeOptions(rawOptions, context);
|
|
19
|
+
if (options.manifestTransform && options.manifestTransform !== '') {
|
|
20
|
+
devkit_1.logger.info(`Applying Forge manifest transformation ${context.configurationName ? `(${context.configurationName})` : ''}: ${options.manifestTransform}`);
|
|
21
|
+
yield (0, transform_manifest_yml_1.transformManifestYml)(options, context);
|
|
22
|
+
}
|
|
8
23
|
const args = [
|
|
9
24
|
'deploy',
|
|
10
25
|
`--environment=${options.environment}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/executors/deploy/executor.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/executors/deploy/executor.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAErD,qEAAwE;AACxE,yEAAoE;AAEpE,MAAM,gBAAgB,GAAG,CACvB,OAA8B,EAC9B,OAAwB,EACD,EAAE;IACzB,MAAM,iBAAiB,GAAG,CACxB,CAAS,EACkC,EAAE,CAC7C,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,uCACK,OAAO,KACV,WAAW,EAAE,OAAO,CAAC,iBAAiB,IACtC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAEF,SAA8B,WAAW,CACvC,UAAiC,EACjC,OAAwB;;QAExB,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,KAAK,EAAE,EAAE,CAAC;YAClE,eAAM,CAAC,IAAI,CACT,0CACE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EACjE,KAAK,OAAO,CAAC,iBAAiB,EAAE,CACjC,CAAC;YACF,MAAM,IAAA,6CAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG;YACX,QAAQ;YACR,iBAAiB,OAAO,CAAC,WAAW,EAAE;YACtC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC;QAEF,eAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE/C,MAAM,IAAA,qCAAoB,EAAC,IAAI,EAAE;YAC/B,GAAG,EAAE,OAAO,CAAC,UAAU;SACxB,CAAC,CAAC;QAEH,eAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AAjCD,8BAiCC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { DeployExecutorOptions } from '../schema';
|
|
2
|
+
import { ExecutorContext } from '@nx/devkit';
|
|
3
|
+
type Options = Pick<DeployExecutorOptions, 'outputPath' | 'manifestTransform' | 'verify'>;
|
|
4
|
+
export declare const transformManifestYml: (options: Options, context: ExecutorContext) => Promise<void>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformManifestYml = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const jsonata_1 = tslib_1.__importDefault(require("jsonata"));
|
|
6
|
+
const manifest_yml_1 = require("../../../utils/forge/manifest-yml");
|
|
7
|
+
const devkit_1 = require("@nx/devkit");
|
|
8
|
+
const transformManifestYml = (options, context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
9
|
+
var _a;
|
|
10
|
+
let expression;
|
|
11
|
+
try {
|
|
12
|
+
expression = (0, jsonata_1.default)(options.manifestTransform);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
throw new Error(`Failed to parse expression '${options.manifestTransform}': ${(_a = error.message) !== null && _a !== void 0 ? _a : JSON.stringify(error)}`);
|
|
16
|
+
}
|
|
17
|
+
const manifestPath = (0, devkit_1.joinPathFragments)(context.root, options.outputPath, 'manifest.yml');
|
|
18
|
+
const manifest = yield (0, manifest_yml_1.readManifestYml)(manifestPath);
|
|
19
|
+
expression.registerFunction('env', (s) => process.env[s], '<s:(sl)>');
|
|
20
|
+
const transformedManifest = yield expression.evaluate(manifest);
|
|
21
|
+
if (options.verify) {
|
|
22
|
+
yield (0, manifest_yml_1.validateManifestContent)(transformedManifest);
|
|
23
|
+
}
|
|
24
|
+
(0, manifest_yml_1.writeManifestYml)(manifestPath, transformedManifest);
|
|
25
|
+
});
|
|
26
|
+
exports.transformManifestYml = transformManifestYml;
|
|
27
|
+
//# sourceMappingURL=transform-manifest-yml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-manifest-yml.js","sourceRoot":"","sources":["../../../../../../../packages/nx-forge/src/executors/deploy/lib/transform-manifest-yml.ts"],"names":[],"mappings":";;;;AAAA,8DAA8C;AAE9C,oEAI2C;AAC3C,uCAAgE;AAOzD,MAAM,oBAAoB,GAAG,CAClC,OAAgB,EAChB,OAAwB,EACxB,EAAE;;IACF,IAAI,UAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,UAAU,GAAG,IAAA,iBAAO,EAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,CAAC,iBAAiB,MACtD,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CACvC,EAAE,CACH,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,0BAAiB,EACpC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,UAAU,EAClB,cAAc,CACf,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAe,EAAC,YAAY,CAAC,CAAC;IAErD,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEtE,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEhE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAA,sCAAuB,EAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC;IAED,IAAA,+BAAgB,EAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;AACtD,CAAC,CAAA,CAAC;AAhCW,QAAA,oBAAoB,wBAgC/B"}
|
|
@@ -33,6 +33,10 @@
|
|
|
33
33
|
"description": "Run deployment in verbose mode.",
|
|
34
34
|
"alias": "v",
|
|
35
35
|
"default": false
|
|
36
|
+
},
|
|
37
|
+
"manifestTransform": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "A JSONata expression that transforms the manifest.yml content before the deployment."
|
|
36
40
|
}
|
|
37
41
|
},
|
|
38
42
|
"required": ["outputPath"]
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.normalizeOptions = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
|
6
|
-
const
|
|
6
|
+
const process_resource_dependencies_1 = require("../build/lib/process-resource-dependencies");
|
|
7
7
|
const patch_manifest_yml_1 = require("../build/lib/patch-manifest-yml");
|
|
8
8
|
const generate_package_json_1 = require("../build/lib/generate-package-json");
|
|
9
9
|
const copy_forge_app_assets_1 = require("../build/lib/copy-forge-app-assets");
|
|
@@ -25,9 +25,9 @@ function runExecutor(rawOptions, context) {
|
|
|
25
25
|
}
|
|
26
26
|
const options = normalizeOptions(rawOptions, context.root, sourceRoot, root);
|
|
27
27
|
(0, copy_forge_app_assets_1.copyForgeAppAssets)(options);
|
|
28
|
-
const
|
|
29
|
-
yield (0, patch_manifest_yml_1.patchManifestYml)(Object.assign(Object.assign({}, options), {
|
|
30
|
-
(0, generate_package_json_1.generatePackageJson)(context.projectName, context.projectGraph,
|
|
28
|
+
const resources = yield (0, process_resource_dependencies_1.processResourceDependencies)(Object.assign(Object.assign({}, options), { resourcePath: options.resourcePath }), context);
|
|
29
|
+
yield (0, patch_manifest_yml_1.patchManifestYml)(Object.assign(Object.assign({}, options), { resourcePath: options.resourcePath }));
|
|
30
|
+
(0, generate_package_json_1.generatePackageJson)(context.projectName, context.projectGraph, resources, options);
|
|
31
31
|
devkit_1.logger.info('Executor ran for package');
|
|
32
32
|
return {
|
|
33
33
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/executors/package/executor.ts"],"names":[],"mappings":";;;;AAAA,uCAAqD;AAErD,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/executors/package/executor.ts"],"names":[],"mappings":";;;;AAAA,uCAAqD;AAErD,8FAAyF;AACzF,wEAAmE;AACnE,8EAAyE;AACzE,8EAAwE;AAExE,SAAgB,gBAAgB,CAC9B,OAA8B,EAC9B,IAAY,EACZ,UAAkB,EAClB,WAAmB;;IAEnB,uCACK,OAAO,KACV,IAAI;QACJ,UAAU;QACV,WAAW,EACX,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,mCAAI,WAAW,EACjD,qBAAqB,EAAE,MAAA,OAAO,CAAC,qBAAqB,mCAAI,EAAE,IAC1D;AACJ,CAAC;AAdD,4CAcC;AAED,SAA8B,WAAW,CACvC,UAAiC,EACjC,OAAwB;;QAExB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GACxB,OAAO,CAAC,sBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAY,CAAC,CAAC;QAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,8BAA8B,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,wBAAwB,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAE7E,IAAA,0CAAkB,EAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAA,2DAA2B,kCAC5C,OAAO,KAAE,YAAY,EAAE,OAAO,CAAC,YAAY,KAChD,OAAO,CACR,CAAC;QAEF,MAAM,IAAA,qCAAgB,kCAAM,OAAO,KAAE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAG,CAAC;QAE3E,IAAA,2CAAmB,EACjB,OAAO,CAAC,WAAY,EACpB,OAAO,CAAC,YAAa,EACrB,SAAS,EACT,OAAO,CACR,CAAC;QAEF,eAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AArCD,8BAqCC"}
|
|
@@ -17,6 +17,11 @@
|
|
|
17
17
|
"type": "object",
|
|
18
18
|
"description": "Map of resource project names to their respective output path.",
|
|
19
19
|
"default": {}
|
|
20
|
+
},
|
|
21
|
+
"uiKit2Packaging": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"description": "Enables UI Kit 2 compatible packaging.",
|
|
24
|
+
"default": false
|
|
20
25
|
}
|
|
21
26
|
},
|
|
22
27
|
"required": ["outputPath"]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ManifestSchema } from '@forge/manifest';
|
|
2
|
-
export declare
|
|
2
|
+
export declare const validateManifestContent: (manifestContent: ManifestSchema) => Promise<ManifestSchema>;
|
|
3
|
+
export declare const readManifestYml: (path: string) => Promise<ManifestSchema>;
|
|
3
4
|
/**
|
|
4
5
|
* Writes the given manifest file to the specified file path.
|
|
5
6
|
* @param path File path where to write the file to (incl. manifest.yml).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractCustomUIProjectNames = exports.writeManifestYml = exports.readManifestYml = void 0;
|
|
3
|
+
exports.extractCustomUIProjectNames = exports.writeManifestYml = exports.readManifestYml = exports.validateManifestContent = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const manifest_1 = require("@forge/manifest");
|
|
6
6
|
const FULL_SCHEMA = tslib_1.__importStar(require("@forge/manifest/out/schema/manifest-schema.json"));
|
|
@@ -15,23 +15,28 @@ class ManifestYmlValidator extends manifest_1.AbstractValidationProcessor {
|
|
|
15
15
|
]);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
18
|
+
const schemaAndFileValidator = (manifestFilePath) => new ManifestYmlValidator().process(manifestFilePath);
|
|
19
|
+
const schemaContentValidator = (manifestContent) => new manifest_1.SchemaValidator(FULL_SCHEMA).validate({
|
|
20
|
+
yamlContent: manifestContent,
|
|
21
|
+
});
|
|
22
|
+
const validateManifestSchema = (validator) => (input) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
+
const { manifestObject, success: isManifestParseSuccess, errors, } = yield validator(input);
|
|
24
|
+
if (!isManifestParseSuccess ||
|
|
25
|
+
!manifestObject ||
|
|
26
|
+
!manifestObject.typedContent) {
|
|
27
|
+
throw new Error(`Failed to validate manifest input: ${(errors || [])
|
|
28
|
+
.map((e) => e.message)
|
|
29
|
+
.join('\n')}`);
|
|
30
|
+
}
|
|
31
|
+
const manifestSchema = manifestObject.typedContent;
|
|
32
|
+
if (!manifestSchema) {
|
|
33
|
+
throw new Error('Manifest parse result did not return any content.');
|
|
34
|
+
}
|
|
35
|
+
return manifestSchema;
|
|
36
|
+
});
|
|
37
|
+
const validateManifestContent = (manifestContent) => validateManifestSchema(schemaContentValidator)(manifestContent);
|
|
38
|
+
exports.validateManifestContent = validateManifestContent;
|
|
39
|
+
const readManifestYml = (path) => validateManifestSchema(schemaAndFileValidator)(path);
|
|
35
40
|
exports.readManifestYml = readManifestYml;
|
|
36
41
|
/**
|
|
37
42
|
* Writes the given manifest file to the specified file path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-yml.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/utils/forge/manifest-yml.ts"],"names":[],"mappings":";;;;AAAA,8CAMyB;AACzB,qGAA+E;AAC/E,qCAA+B;AAC/B,2BAAmC;
|
|
1
|
+
{"version":3,"file":"manifest-yml.js","sourceRoot":"","sources":["../../../../../../packages/nx-forge/src/utils/forge/manifest-yml.ts"],"names":[],"mappings":";;;;AAAA,8CAMyB;AACzB,qGAA+E;AAC/E,qCAA+B;AAC/B,2BAAmC;AAGnC,MAAM,oBAAqB,SAAQ,sCAA2C;IAC5E;QACE,KAAK,CAAC;YACJ,IAAI,wBAAa,EAAE;YACnB,IAAI,wBAAa,EAAE;YACnB,IAAI,0BAAe,CAAC,WAAW,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;CACF;AAMD,MAAM,sBAAsB,GAAoC,CAC9D,gBAAwB,EACxB,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE1D,MAAM,sBAAsB,GAA4C,CACtE,eAA+B,EAC/B,EAAE,CACF,IAAI,0BAAe,CAAiB,WAAW,CAAC,CAAC,QAAQ,CAAC;IACxD,WAAW,EAAE,eAAe;CAC7B,CAAC,CAAC;AAEL,MAAM,sBAAsB,GAC1B,CAAI,SAAqC,EAAE,EAAE,CAC7C,CAAO,KAAQ,EAAE,EAAE;IACjB,MAAM,EACJ,cAAc,EACd,OAAO,EAAE,sBAAsB,EAC/B,MAAM,GACP,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IAE3B,IACE,CAAC,sBAAsB;QACvB,CAAC,cAAc;QACf,CAAC,cAAc,CAAC,YAAY,EAC5B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,sCAAsC,CAAC,MAAM,IAAI,EAAE,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAmB,cAAc,CAAC,YAAY,CAAC;IAEnE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAA,CAAC;AAEG,MAAM,uBAAuB,GAAG,CAAC,eAA+B,EAAE,EAAE,CACzE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC;AADrD,QAAA,uBAAuB,2BAC8B;AAE3D,MAAM,eAAe,GAAG,CAAC,IAAY,EAA2B,EAAE,CACvE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC;AAD1C,QAAA,eAAe,mBAC2B;AAEvD;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,KAAqB,EAAQ,EAAE;IAC5E,MAAM,OAAO,GAAG,IAAA,cAAI,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChC,IAAA,kBAAa,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAHW,QAAA,gBAAgB,oBAG3B;AAEF;;;;;GAKG;AACI,MAAM,2BAA2B,GAAG,CACzC,QAAwB,EACd,EAAE;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC,CAAC;AAJW,QAAA,2BAA2B,+BAItC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process-custom-ui-dependencies.js","sourceRoot":"","sources":["../../../../../../../packages/nx-forge/src/executors/build/lib/process-custom-ui-dependencies.ts"],"names":[],"mappings":"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"}
|