@toolsplus/nx-forge 4.1.0 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toolsplus/nx-forge",
3
- "version": "4.1.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": "^5.5.0",
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",
@@ -1,4 +1,5 @@
1
+ import { ExecutorContext } from '@nx/devkit';
1
2
  import { DeployExecutorOptions } from './schema';
2
- export default function runExecutor(options: DeployExecutorOptions): Promise<{
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
- function runExecutor(options) {
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,uCAAoC;AAEpC,qEAAwE;AAExE,SAA8B,WAAW,CAAC,OAA8B;;QACtE,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;AAnBD,8BAmBC"}
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"}
@@ -4,4 +4,5 @@ export interface DeployExecutorOptions {
4
4
  verify: boolean;
5
5
  interactive: boolean;
6
6
  verbose: boolean;
7
+ manifestTransform?: string;
7
8
  }
@@ -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"]
@@ -1,5 +1,6 @@
1
1
  import { ManifestSchema } from '@forge/manifest';
2
- export declare function readManifestYml(path: string): Promise<ManifestSchema>;
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
- function readManifestYml(path) {
19
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
- const { manifestObject, success: isManifestParseSuccess, errors, } = yield new ManifestYmlValidator().process(path);
21
- if (!isManifestParseSuccess ||
22
- !manifestObject ||
23
- !manifestObject.typedContent) {
24
- throw new Error(`Failed to parse manifest.yml (${path}): ${(errors || [])
25
- .map((e) => e.message)
26
- .join('\n')}`);
27
- }
28
- const manifestSchema = manifestObject.typedContent;
29
- if (!manifestSchema) {
30
- throw new Error('Manifest parse result did not return any content.');
31
- }
32
- return manifestSchema;
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;AAEnC,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;AACD,SAAsB,eAAe,CAAC,IAAY;;QAChD,MAAM,EACJ,cAAc,EACd,OAAO,EAAE,sBAAsB,EAC/B,MAAM,GACP,GAAG,MAAM,IAAI,oBAAoB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnD,IACE,CAAC,sBAAsB;YACvB,CAAC,cAAc;YACf,CAAC,cAAc,CAAC,YAAY,EAC5B,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;iBACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAmB,cAAc,CAAC,YAAY,CAAC;QAEnE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;CAAA;AA1BD,0CA0BC;AAED;;;;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
+ {"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"}