@forge/cli-shared 2.2.2 → 2.3.0-next.10

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/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # @forge/cli-shared
2
2
 
3
+ ## 2.3.0-next.10
4
+
5
+ ### Patch Changes
6
+
7
+ - 47a71a62: Upgrade graphql-request for node 16 compatibility
8
+ - Updated dependencies [fcd95803]
9
+ - Updated dependencies [e65d33e6]
10
+ - @forge/manifest@3.3.0-next.8
11
+
12
+ ## 2.3.0-next.9
13
+
14
+ ### Minor Changes
15
+
16
+ - cf2420d2: Added root package.json and lock files to app bundle.
17
+
18
+ ## 2.3.0-next.8
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies [8e35955]
23
+ - @forge/manifest@3.3.0-next.7
24
+
25
+ ## 2.3.0-next.7
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [ad94136]
30
+ - @forge/manifest@3.3.0-next.6
31
+
32
+ ## 2.3.0-next.6
33
+
34
+ ### Patch Changes
35
+
36
+ - Updated dependencies [e95919f]
37
+ - Updated dependencies [f894871]
38
+ - @forge/manifest@3.3.0-next.5
39
+
40
+ ## 2.3.0-next.5
41
+
42
+ ### Patch Changes
43
+
44
+ - Updated dependencies [ae111cd]
45
+ - @forge/manifest@3.3.0-next.4
46
+
47
+ ## 2.3.0-next.4
48
+
49
+ ### Patch Changes
50
+
51
+ - Updated dependencies [6c44d2b]
52
+ - Updated dependencies [051ed1f]
53
+ - @forge/manifest@3.3.0-next.3
54
+
55
+ ## 2.3.0-next.3
56
+
57
+ ### Patch Changes
58
+
59
+ - Updated dependencies [88e57a1]
60
+ - Updated dependencies [e822a8a]
61
+ - Updated dependencies [c255b24]
62
+ - @forge/util@1.2.0-next.0
63
+ - @forge/manifest@3.3.0-next.2
64
+
65
+ ## 2.3.0-next.2
66
+
67
+ ### Patch Changes
68
+
69
+ - Updated dependencies [24203783]
70
+ - @forge/manifest@3.3.0-next.1
71
+
72
+ ## 2.3.0-next.1
73
+
74
+ ### Patch Changes
75
+
76
+ - Updated dependencies [c145946]
77
+ - @forge/manifest@3.3.0-next.0
78
+
79
+ ## 2.3.0-next.0
80
+
81
+ ### Minor Changes
82
+
83
+ - 949bd40: The @forge/cli will now download templates from a new service (previously bitbucket), old versions of the CLI won't receive template updates
84
+
3
85
  ## 2.2.2
4
86
 
5
87
  ### Patch Changes
@@ -17,7 +17,7 @@ export interface TemplateLister {
17
17
  export interface Templater extends TemplateLister {
18
18
  downloadAndExtract(template: string, directory: string): Promise<void>;
19
19
  }
20
- export declare class BitbucketTemplateDownloader implements TemplateDownloader {
20
+ export declare class TemplateServiceDownloader implements TemplateDownloader {
21
21
  download(template: string, zipFile: string): Promise<void>;
22
22
  private buildZipUrl;
23
23
  }
@@ -30,7 +30,9 @@ export declare class ZipTemplateExtractor implements TemplateExtractor {
30
30
  export declare class TemplateFetchError extends Error {
31
31
  constructor();
32
32
  }
33
- export declare class BitbucketTemplateLister implements TemplateLister {
33
+ export declare class TemplateServiceLister implements TemplateLister {
34
+ private isValidTemplateMapEntry;
35
+ private isValidTemplatesResponse;
34
36
  getAvailableTemplates(): Promise<string[]>;
35
37
  }
36
38
  export declare class ComposableTemplater implements Templater {
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/apps/template.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAK/B,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,QAAQ,EAAE,MAAM;CAG7B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;CAAG;AAEzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,cAAc;IAC7B,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED,qBAAa,2BAA4B,YAAW,kBAAkB;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBvE,OAAO,CAAC,WAAW;CAGpB;AAED,qBAAa,oBAAqB,YAAW,iBAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAExC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAc7D,2BAA2B;CAqB1C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;;CAI5C;AAED,qBAAa,uBAAwB,YAAW,cAAc;IAC/C,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAgBxD;AAED,qBAAa,mBAAoB,YAAW,SAAS;IAEjD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM;IAEpB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnF,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAG3C"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/apps/template.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAM/B,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,QAAQ,EAAE,MAAM;CAG7B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;CAAG;AAEzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,cAAc;IAC7B,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED,qBAAa,yBAA0B,YAAW,kBAAkB;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevE,OAAO,CAAC,WAAW;CAGpB;AAED,qBAAa,oBAAqB,YAAW,iBAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAExC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAc7D,2BAA2B;CAqB1C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;;CAI5C;AAKD,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,wBAAwB;IAOnB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAkBxD;AAED,qBAAa,mBAAoB,YAAW,SAAS;IAEjD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM;IAEpB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnF,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAG3C"}
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ComposableTemplater = exports.BitbucketTemplateLister = exports.TemplateFetchError = exports.ZipTemplateExtractor = exports.BitbucketTemplateDownloader = exports.InvalidTemplateArchiveError = exports.NoTemplateError = void 0;
3
+ exports.ComposableTemplater = exports.TemplateServiceLister = exports.TemplateFetchError = exports.ZipTemplateExtractor = exports.TemplateServiceDownloader = exports.InvalidTemplateArchiveError = exports.NoTemplateError = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const fs_1 = tslib_1.__importDefault(require("fs"));
6
6
  const fs_extra_1 = require("fs-extra");
7
- const https_1 = require("https");
8
7
  const ignore_walk_1 = tslib_1.__importDefault(require("ignore-walk"));
9
8
  const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
10
9
  const path_1 = require("path");
11
10
  const tmp_1 = tslib_1.__importDefault(require("tmp"));
11
+ const url_1 = require("url");
12
12
  const ui_1 = require("../ui");
13
- const BITBUCKET_PROJECT = 'XTEM';
13
+ const TEMPLATE_SERVICE_URL = 'https://forge-templates.us-west-2.prod.public.atl-paas.net/';
14
+ const TEMPLATE_MAP = 'templates.json';
14
15
  class NoTemplateError extends Error {
15
16
  constructor(template) {
16
17
  super(ui_1.Text.create.error.template.notFound(template));
@@ -20,27 +21,24 @@ exports.NoTemplateError = NoTemplateError;
20
21
  class InvalidTemplateArchiveError extends Error {
21
22
  }
22
23
  exports.InvalidTemplateArchiveError = InvalidTemplateArchiveError;
23
- class BitbucketTemplateDownloader {
24
+ class TemplateServiceDownloader {
24
25
  async download(template, zipFile) {
25
- return new Promise((resolve, reject) => {
26
- const zipUrl = this.buildZipUrl(template);
27
- const fileStream = fs_1.default.createWriteStream(zipFile);
28
- const downloadRequest = https_1.request(zipUrl, (res) => {
29
- if (res.statusCode !== 200) {
30
- reject(new NoTemplateError(template));
31
- return;
32
- }
33
- res.pipe(fileStream);
34
- });
35
- downloadRequest.end();
26
+ const zipUrl = this.buildZipUrl(template);
27
+ const fileStream = fs_1.default.createWriteStream(zipFile);
28
+ const response = await node_fetch_1.default(zipUrl);
29
+ if (!response.ok) {
30
+ throw new NoTemplateError(template);
31
+ }
32
+ await new Promise((resolve) => {
36
33
  fileStream.on('finish', resolve);
34
+ response.body.pipe(fileStream);
37
35
  });
38
36
  }
39
37
  buildZipUrl(template) {
40
- return `https://bitbucket.org/atlassian/${template}/get/master.zip`;
38
+ return new url_1.URL(`${template}.zip`, TEMPLATE_SERVICE_URL);
41
39
  }
42
40
  }
43
- exports.BitbucketTemplateDownloader = BitbucketTemplateDownloader;
41
+ exports.TemplateServiceDownloader = TemplateServiceDownloader;
44
42
  class ZipTemplateExtractor {
45
43
  constructor(zipAccessor) {
46
44
  this.zipAccessor = zipAccessor;
@@ -80,22 +78,36 @@ class TemplateFetchError extends Error {
80
78
  }
81
79
  }
82
80
  exports.TemplateFetchError = TemplateFetchError;
83
- class BitbucketTemplateLister {
81
+ class TemplateServiceLister {
82
+ isValidTemplateMapEntry(entry) {
83
+ return typeof entry === 'object' && entry !== null && typeof entry.name === 'string';
84
+ }
85
+ isValidTemplatesResponse(response) {
86
+ if (Array.isArray(response)) {
87
+ return response.every((curr) => this.isValidTemplateMapEntry(curr));
88
+ }
89
+ return false;
90
+ }
84
91
  async getAvailableTemplates() {
85
92
  try {
86
- const res = await node_fetch_1.default(`https://api.bitbucket.org/2.0/repositories/atlassian?q=project.key=%22${BITBUCKET_PROJECT}%22&sort=name&pagelen=50`);
93
+ const res = await node_fetch_1.default(new url_1.URL(TEMPLATE_MAP, TEMPLATE_SERVICE_URL));
87
94
  if (!res.ok) {
88
95
  throw new TemplateFetchError();
89
96
  }
90
97
  const json = await res.json();
91
- return json.values.map((repo) => repo.name);
98
+ if (this.isValidTemplatesResponse(json)) {
99
+ return json.map(({ name }) => name);
100
+ }
101
+ else {
102
+ throw new TemplateFetchError();
103
+ }
92
104
  }
93
105
  catch (e) {
94
106
  throw new TemplateFetchError();
95
107
  }
96
108
  }
97
109
  }
98
- exports.BitbucketTemplateLister = BitbucketTemplateLister;
110
+ exports.TemplateServiceLister = TemplateServiceLister;
99
111
  class ComposableTemplater {
100
112
  constructor(downloader, extractor, lister, logger) {
101
113
  this.downloader = downloader;
@@ -30,23 +30,23 @@ class ConfigFile {
30
30
  return functions.map((funcs) => funcs.handler.split('.')[0]);
31
31
  }
32
32
  async readConfig() {
33
- const manifestFileContents = this.fileReader.readFile(_1.manifestFilename);
33
+ const manifestFileContents = this.fileReader.readFile(_1.manifestFileName);
34
34
  try {
35
35
  yaml_1.default.scalarOptions.null.nullStr = '';
36
36
  return yaml_1.parse(manifestFileContents);
37
37
  }
38
38
  catch (_a) {
39
- throw new ui_1.ValidationError(ui_1.Text.artifact.error.invalidYaml(_1.manifestFilename));
39
+ throw new ui_1.ValidationError(ui_1.Text.artifact.error.invalidYaml(_1.manifestFileName));
40
40
  }
41
41
  }
42
42
  async readConfigToDocument() {
43
- const manifestFileContents = this.fileReader.readFile(_1.manifestFilename);
43
+ const manifestFileContents = this.fileReader.readFile(_1.manifestFileName);
44
44
  if (manifestFileContents) {
45
45
  try {
46
46
  return yaml_1.parseDocument(manifestFileContents);
47
47
  }
48
48
  catch (_a) {
49
- throw new ui_1.ValidationError(ui_1.Text.artifact.error.invalidYaml(_1.manifestFilename));
49
+ throw new ui_1.ValidationError(ui_1.Text.artifact.error.invalidYaml(_1.manifestFileName));
50
50
  }
51
51
  }
52
52
  }
@@ -76,18 +76,18 @@ class ConfigFile {
76
76
  return actualModules;
77
77
  }
78
78
  async prependAppNameToModules(name) {
79
- const manifestFileContents = this.fileReader.readFile(_1.manifestFilename);
79
+ const manifestFileContents = this.fileReader.readFile(_1.manifestFileName);
80
80
  const currentConfigDoc = yaml_1.parseDocument(manifestFileContents || '');
81
81
  const modules = currentConfigDoc.get('modules');
82
82
  if (modules && modules.type === util_1.Type.MAP) {
83
83
  const modulesObject = modules.toJSON();
84
84
  const modulesWithUniqueName = this.makeManifestUnique(modulesObject, name);
85
85
  currentConfigDoc.set('modules', modulesWithUniqueName);
86
- this.fileWriter.writeStringToFile(currentConfigDoc.toString(), _1.manifestFilename);
86
+ this.fileWriter.writeStringToFile(currentConfigDoc.toString(), _1.manifestFileName);
87
87
  }
88
88
  }
89
89
  async writeToConfigFile(configKey, config) {
90
- const manifestFileContents = this.fileReader.readFile(_1.manifestFilename);
90
+ const manifestFileContents = this.fileReader.readFile(_1.manifestFileName);
91
91
  const currentConfigDoc = yaml_1.parseDocument(manifestFileContents || '');
92
92
  Object.keys(config).forEach((key) => {
93
93
  if (config[key] === undefined) {
@@ -95,7 +95,7 @@ class ConfigFile {
95
95
  }
96
96
  });
97
97
  currentConfigDoc.set(configKey, config);
98
- this.fileWriter.writeStringToFile(currentConfigDoc.toString(), _1.manifestFilename);
98
+ this.fileWriter.writeStringToFile(currentConfigDoc.toString(), _1.manifestFileName);
99
99
  }
100
100
  getHostedResourceKeys(modules) {
101
101
  const resourceKeys = [];
@@ -1,5 +1,6 @@
1
1
  import { ManifestSchema, Resources } from '@forge/manifest';
2
- export declare const manifestFilename = "manifest.yml";
2
+ export declare const manifestFileName = "manifest.yml";
3
+ export declare const dependencyFileNames: string[];
3
4
  export interface BaseModule {
4
5
  key: string;
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,eAAO,MAAM,gBAAgB,aAAc,GAAG,0BAG7C,CAAC;AAEF,eAAO,MAAM,sBAAsB,WAAY,GAAG,oCAGjD,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,UAAuE,CAAC;AAExG,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,eAAO,MAAM,gBAAgB,aAAc,GAAG,0BAG7C,CAAC;AAEF,eAAO,MAAM,sBAAsB,WAAY,GAAG,oCAGjD,CAAC"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isHostedResourceModule = exports.validateResource = exports.manifestFilename = void 0;
4
- exports.manifestFilename = 'manifest.yml';
3
+ exports.isHostedResourceModule = exports.validateResource = exports.dependencyFileNames = exports.manifestFileName = void 0;
4
+ exports.manifestFileName = 'manifest.yml';
5
+ exports.dependencyFileNames = [exports.manifestFileName, 'package.json', 'package-lock.json', 'yarn.lock'];
5
6
  exports.validateResource = (resource) => {
6
7
  const { key, path } = resource;
7
8
  return typeof key === 'string' && typeof path === 'string';