@forge/cli 13.2.0-next.6-experimental-a1600ff → 13.3.0-next.0-experimental-620648d

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 (41) hide show
  1. package/CHANGELOG.md +174 -6
  2. package/npm-shrinkwrap.json +54 -35
  3. package/out/command-line/controller/install-controller.d.ts +4 -1
  4. package/out/command-line/controller/install-controller.d.ts.map +1 -1
  5. package/out/command-line/controller/install-controller.js +85 -1
  6. package/out/command-line/controller/install-controller.js.map +1 -1
  7. package/out/command-line/controller/module-add-controller.d.ts.map +1 -1
  8. package/out/command-line/controller/module-add-controller.js +2 -2
  9. package/out/command-line/controller/module-add-controller.js.map +1 -1
  10. package/out/command-line/register-app-commands.js +6 -6
  11. package/out/command-line/register-app-commands.js.map +1 -1
  12. package/out/command-line/view/module-view.d.ts +3 -0
  13. package/out/command-line/view/module-view.d.ts.map +1 -1
  14. package/out/command-line/view/module-view.js +4 -1
  15. package/out/command-line/view/module-view.js.map +1 -1
  16. package/out/deploy/package-upload-deploy.js +1 -1
  17. package/out/deploy/package-upload-deploy.js.map +1 -1
  18. package/out/deploy/packager/archiver.d.ts +10 -12
  19. package/out/deploy/packager/archiver.d.ts.map +1 -1
  20. package/out/deploy/packager/archiver.js +43 -31
  21. package/out/deploy/packager/archiver.js.map +1 -1
  22. package/out/deploy/packager/runtime-bundler.d.ts.map +1 -1
  23. package/out/deploy/packager/runtime-bundler.js +8 -7
  24. package/out/deploy/packager/runtime-bundler.js.map +1 -1
  25. package/out/installations/graphql-client.d.ts.map +1 -1
  26. package/out/installations/graphql-client.js +16 -2
  27. package/out/installations/graphql-client.js.map +1 -1
  28. package/out/installations/site-translation/sited-products.d.ts +3 -3
  29. package/out/installations/site-translation/sited-products.d.ts.map +1 -1
  30. package/out/installations/site-translation/sited-products.js.map +1 -1
  31. package/out/service/installation-service.d.ts +5 -1
  32. package/out/service/installation-service.d.ts.map +1 -1
  33. package/out/service/installation-service.js +9 -3
  34. package/out/service/installation-service.js.map +1 -1
  35. package/out/service/module-service.d.ts.map +1 -1
  36. package/out/service/module-service.js +5 -4
  37. package/out/service/module-service.js.map +1 -1
  38. package/out/service/resource-packaging-service.d.ts.map +1 -1
  39. package/out/service/resource-packaging-service.js +11 -8
  40. package/out/service/resource-packaging-service.js.map +1 -1
  41. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,31 +1,199 @@
1
1
  # @forge/cli
2
2
 
3
- ## 13.2.0-next.6-experimental-a1600ff
3
+ ## 13.3.0-next.0-experimental-620648d
4
+
5
+ ### Minor Changes
6
+
7
+ - 5c2457b: Display deeplinks to installed modules after a successful `forge install`
8
+ - d706cd8: Add support for manually bundling UI Kit resources and bypassing the built-in default bundler
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies [d706cd8]
13
+ - Updated dependencies [5c2457b]
14
+ - Updated dependencies [ca4fa27]
15
+ - Updated dependencies [d706cd8]
16
+ - @forge/manifest@13.3.0-next.0-experimental-620648d
17
+ - @forge/cli-shared@9.3.0-next.0-experimental-620648d
18
+ - @forge/tunnel@7.1.0-next.0-experimental-620648d
19
+ - @forge/bundler@7.0.3-next.0-experimental-620648d
20
+ - @forge/lint@6.0.3-next.0-experimental-620648d
21
+
22
+ ## 13.3.0-next.0
23
+
24
+ ### Minor Changes
25
+
26
+ - d706cd8: Add support for manually bundling UI Kit resources and bypassing the built-in default bundler
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies [d706cd8]
31
+ - Updated dependencies [ca4fa27]
32
+ - Updated dependencies [d706cd8]
33
+ - @forge/manifest@13.3.0-next.0
34
+ - @forge/cli-shared@9.3.0-next.0
35
+ - @forge/tunnel@7.1.0-next.0
36
+ - @forge/bundler@7.0.3-next.0
37
+ - @forge/lint@6.0.3-next.0
38
+
39
+ ## 13.2.0
4
40
 
5
41
  ### Minor Changes
6
42
 
7
43
  - 238025c: Surface rate limiting on CLI, update e2e tests
44
+ - 756c284: Added a new UI option to allow for a filterable list and adjusted module list, add and create command to utilise this design
8
45
  - 8826ca3: add personal apps support for Forge app creation
9
46
  - d415c89: Surface rate limit errors in CLI, improve E2E test robustness
10
47
  - 757223b: Added Dashboard, bitbucket, rovo, teamwork, action templates
11
48
 
12
49
  ### Patch Changes
13
50
 
51
+ - 77aa958: Formatting
52
+ - 379d225: Remove the "(EAP)" suffix from the "Customer Service Management" product label in the `forge create` wizard. The three Customer Service Management extension points (`customerServiceManagement:queuePage`, `customerServiceManagement:requestDetail`, `customerServiceManagement:crmImport`) are all GA.
53
+ - f408181: Reject dependencies outside application directory
14
54
  - 903d6c1: Updated UI to show error when no installations
55
+ - 794aa2a: Skip warning for internal sites for personal apps
15
56
  - 0f84939: Fixing pagination failures with `forge environments list` for apps with larger environment counts
57
+ - 6e5b5a4: Better interface for packaging the runtime code
58
+ - 5abe69e: add support for personal app installation contexts
16
59
  - Updated dependencies [4c5ba1c]
60
+ - Updated dependencies [2b30ef8]
61
+ - Updated dependencies [756c284]
62
+ - Updated dependencies [f408181]
17
63
  - Updated dependencies [903d6c1]
64
+ - Updated dependencies [794aa2a]
18
65
  - Updated dependencies [8826ca3]
66
+ - Updated dependencies [6e5b5a4]
19
67
  - Updated dependencies [d415c89]
20
68
  - Updated dependencies [757223b]
69
+ - Updated dependencies [5abe69e]
21
70
  - Updated dependencies [7195f29]
22
71
  - Updated dependencies [3252a62]
72
+ - Updated dependencies [119be75]
73
+ - Updated dependencies [c67b720]
23
74
  - Updated dependencies [3991f92]
24
- - @forge/manifest@13.1.1-next.2-experimental-a1600ff
25
- - @forge/cli-shared@9.2.0-next.5-experimental-a1600ff
26
- - @forge/bundler@7.0.2-next.5-experimental-a1600ff
27
- - @forge/lint@6.0.2-next.5-experimental-a1600ff
28
- - @forge/tunnel@7.0.2-next.5-experimental-a1600ff
75
+ - @forge/manifest@13.2.0
76
+ - @forge/cli-shared@9.2.0
77
+ - @forge/bundler@7.0.2
78
+ - @forge/lint@6.0.2
79
+ - @forge/tunnel@7.0.2
80
+
81
+ ## 13.2.0-next.17
82
+
83
+ ### Patch Changes
84
+
85
+ - 794aa2a: Skip warning for internal sites for personal apps
86
+ - Updated dependencies [794aa2a]
87
+ - @forge/cli-shared@9.2.0-next.13
88
+ - @forge/bundler@7.0.2-next.14
89
+ - @forge/lint@6.0.2-next.14
90
+ - @forge/tunnel@7.0.2-next.14
91
+
92
+ ## 13.2.0-next.16
93
+
94
+ ### Patch Changes
95
+
96
+ - Updated dependencies [119be75]
97
+ - @forge/manifest@13.2.0-next.6
98
+ - @forge/bundler@7.0.2-next.13
99
+ - @forge/cli-shared@9.2.0-next.12
100
+ - @forge/lint@6.0.2-next.13
101
+ - @forge/tunnel@7.0.2-next.13
102
+
103
+ ## 13.2.0-next.15
104
+
105
+ ### Minor Changes
106
+
107
+ - 756c284: Added a new UI option to allow for a filterable list and adjusted module list, add and create command to utilise this design
108
+
109
+ ### Patch Changes
110
+
111
+ - Updated dependencies [756c284]
112
+ - @forge/cli-shared@9.2.0-next.11
113
+ - @forge/bundler@7.0.2-next.12
114
+ - @forge/lint@6.0.2-next.12
115
+ - @forge/tunnel@7.0.2-next.12
116
+
117
+ ## 13.2.0-next.14
118
+
119
+ ### Patch Changes
120
+
121
+ - f408181: Reject dependencies outside application directory
122
+ - Updated dependencies [f408181]
123
+ - @forge/bundler@7.0.2-next.11
124
+ - @forge/cli-shared@9.2.0-next.10
125
+ - @forge/tunnel@7.0.2-next.11
126
+ - @forge/lint@6.0.2-next.11
127
+
128
+ ## 13.2.0-next.13
129
+
130
+ ### Patch Changes
131
+
132
+ - Updated dependencies [2b30ef8]
133
+ - @forge/manifest@13.2.0-next.5
134
+ - @forge/bundler@7.0.2-next.10
135
+ - @forge/cli-shared@9.2.0-next.9
136
+ - @forge/lint@6.0.2-next.10
137
+ - @forge/tunnel@7.0.2-next.10
138
+
139
+ ## 13.2.0-next.12
140
+
141
+ ### Patch Changes
142
+
143
+ - 5abe69e: add support for personal app installation contexts
144
+ - Updated dependencies [5abe69e]
145
+ - @forge/cli-shared@9.2.0-next.8
146
+ - @forge/manifest@13.2.0-next.4
147
+ - @forge/bundler@7.0.2-next.9
148
+ - @forge/lint@6.0.2-next.9
149
+ - @forge/tunnel@7.0.2-next.9
150
+
151
+ ## 13.2.0-next.11
152
+
153
+ ### Minor Changes
154
+
155
+ - 8826ca3: add personal apps support for Forge app creation
156
+
157
+ ### Patch Changes
158
+
159
+ - Updated dependencies [8826ca3]
160
+ - Updated dependencies [c67b720]
161
+ - @forge/cli-shared@9.2.0-next.7
162
+ - @forge/manifest@13.2.0-next.3
163
+ - @forge/bundler@7.0.2-next.8
164
+ - @forge/lint@6.0.2-next.8
165
+ - @forge/tunnel@7.0.2-next.8
166
+
167
+ ## 13.2.0-next.10
168
+
169
+ ### Patch Changes
170
+
171
+ - 77aa958: Formatting
172
+
173
+ ## 13.2.0-next.9
174
+
175
+ ### Patch Changes
176
+
177
+ - @forge/lint@6.0.2-next.7
178
+ - @forge/tunnel@7.0.2-next.7
179
+ - @forge/bundler@7.0.2-next.7
180
+
181
+ ## 13.2.0-next.8
182
+
183
+ ### Patch Changes
184
+
185
+ - 6e5b5a4: Better interface for packaging the runtime code
186
+ - Updated dependencies [6e5b5a4]
187
+ - @forge/cli-shared@9.2.0-next.6
188
+ - @forge/bundler@7.0.2-next.6
189
+ - @forge/lint@6.0.2-next.6
190
+ - @forge/tunnel@7.0.2-next.6
191
+
192
+ ## 13.2.0-next.7
193
+
194
+ ### Patch Changes
195
+
196
+ - 379d225: Remove the "(EAP)" suffix from the "Customer Service Management" product label in the `forge create` wizard. The three Customer Service Management extension points (`customerServiceManagement:queuePage`, `customerServiceManagement:requestDetail`, `customerServiceManagement:crmImport`) are all GA.
29
197
 
30
198
  ## 13.2.0-next.6
31
199
 
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@forge/cli",
3
- "version": "13.2.0-next.6-experimental-a1600ff",
3
+ "version": "13.3.0-next.0-experimental-620648d",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@forge/cli",
9
- "version": "13.2.0-next.6-experimental-a1600ff",
9
+ "version": "13.3.0-next.0-experimental-620648d",
10
10
  "hasInstallScript": true,
11
11
  "license": "SEE LICENSE IN LICENSE.txt",
12
12
  "dependencies": {
13
- "@forge/bundler": "7.0.2-next.5-experimental-a1600ff",
14
- "@forge/cli-shared": "9.2.0-next.5-experimental-a1600ff",
13
+ "@forge/bundler": "7.0.3-next.0-experimental-620648d",
14
+ "@forge/cli-shared": "9.3.0-next.0-experimental-620648d",
15
15
  "@forge/egress": "3.0.0",
16
16
  "@forge/i18n": "1.0.0",
17
- "@forge/lint": "6.0.2-next.5-experimental-a1600ff",
18
- "@forge/manifest": "13.1.1-next.2-experimental-a1600ff",
17
+ "@forge/lint": "6.0.3-next.0-experimental-620648d",
18
+ "@forge/manifest": "13.3.0-next.0-experimental-620648d",
19
19
  "@forge/runtime": "7.0.0",
20
- "@forge/tunnel": "7.0.2-next.5-experimental-a1600ff",
20
+ "@forge/tunnel": "7.1.0-next.0-experimental-620648d",
21
21
  "@forge/util": "3.0.0",
22
22
  "@sentry/node": "7.106.0",
23
23
  "ajv": "^8.18.0",
@@ -555,9 +555,9 @@
555
555
  }
556
556
  },
557
557
  "node_modules/@forge/bundler": {
558
- "version": "7.0.2-next.5-experimental-a1600ff",
559
- "resolved": "https://registry.npmjs.org/@forge/bundler/-/bundler-7.0.2-next.5-experimental-a1600ff.tgz",
560
- "integrity": "sha512-mF3ECmEtqKXZr+N4EL2rcHg9gWUQupiqMl8HwzIt8WfMhCuaMea7ZHYkN5G7Ybv4XnKCyYMMb0YCOWBuUJjfHw==",
558
+ "version": "7.0.3-next.0-experimental-620648d",
559
+ "resolved": "https://registry.npmjs.org/@forge/bundler/-/bundler-7.0.3-next.0-experimental-620648d.tgz",
560
+ "integrity": "sha512-c5NKo3B0H9cYij2mGZBiJDSGrRykdieMzyeXc86eogAg94d9MjoENUktsGrhV3NcL/kA6ax6pVeiSENLKKQRGQ==",
561
561
  "license": "SEE LICENSE IN LICENSE.txt",
562
562
  "dependencies": {
563
563
  "@babel/core": "^7.24.0",
@@ -569,10 +569,10 @@
569
569
  "@babel/plugin-transform-react-jsx": "^7.23.4",
570
570
  "@babel/traverse": "^7.24.0",
571
571
  "@babel/types": "^7.24.0",
572
- "@forge/cli-shared": "9.2.0-next.5-experimental-a1600ff",
572
+ "@forge/cli-shared": "9.3.0-next.0-experimental-620648d",
573
573
  "@forge/i18n": "1.0.0",
574
- "@forge/lint": "6.0.2-next.5-experimental-a1600ff",
575
- "@forge/manifest": "13.1.1-next.2-experimental-a1600ff",
574
+ "@forge/lint": "6.0.3-next.0-experimental-620648d",
575
+ "@forge/manifest": "13.3.0-next.0-experimental-620648d",
576
576
  "babel-loader": "^8.3.0",
577
577
  "cheerio": "^1.2.0",
578
578
  "cross-spawn": "^7.0.6",
@@ -600,13 +600,13 @@
600
600
  }
601
601
  },
602
602
  "node_modules/@forge/cli-shared": {
603
- "version": "9.2.0-next.5-experimental-a1600ff",
604
- "resolved": "https://registry.npmjs.org/@forge/cli-shared/-/cli-shared-9.2.0-next.5-experimental-a1600ff.tgz",
605
- "integrity": "sha512-EgoZNOEILhP4raGM5AZT6aTizb/SF/OTrK2r+njAwReIjvoIfc8+iFtWfEcmu/M2NP65usW65h6mQ4vFCOM0CQ==",
603
+ "version": "9.3.0-next.0-experimental-620648d",
604
+ "resolved": "https://registry.npmjs.org/@forge/cli-shared/-/cli-shared-9.3.0-next.0-experimental-620648d.tgz",
605
+ "integrity": "sha512-ZYXeDnSU4HqF3LQH7jlIsMU32ft2x02vkY/T5zq1u9SmxOL40FnxbYLNGOGXDKxCsrqX3QzpT/SLf+Rjr049Pg==",
606
606
  "license": "SEE LICENSE IN LICENSE.txt",
607
607
  "dependencies": {
608
608
  "@forge/i18n": "1.0.0",
609
- "@forge/manifest": "13.1.1-next.2-experimental-a1600ff",
609
+ "@forge/manifest": "13.3.0-next.0-experimental-620648d",
610
610
  "@forge/util": "3.0.0",
611
611
  "@sentry/node": "7.106.0",
612
612
  "@vercel/detect-agent": "^1.2.3",
@@ -628,6 +628,7 @@
628
628
  "graphql": "^16.8.1",
629
629
  "graphql-request": "6.1.0",
630
630
  "inquirer": "^8.2.6",
631
+ "inquirer-autocomplete-prompt": "^2.0.1",
631
632
  "io-ts": "^2.2.22",
632
633
  "keytar": "^7.9.0",
633
634
  "node-fetch": "2.7.0",
@@ -650,9 +651,9 @@
650
651
  }
651
652
  },
652
653
  "node_modules/@forge/csp": {
653
- "version": "6.1.0-experimental-a1600ff",
654
- "resolved": "https://registry.npmjs.org/@forge/csp/-/csp-6.1.0-experimental-a1600ff.tgz",
655
- "integrity": "sha512-AdCOe0x3Ja6iKIELblSX2Ra3/R3u68BO4dkkIX8JNxe/wwHjlfvFmaetQdekJU0xpa6eErDYcJDujr5aFNTu5w==",
654
+ "version": "6.2.0-experimental-620648d",
655
+ "resolved": "https://registry.npmjs.org/@forge/csp/-/csp-6.2.0-experimental-620648d.tgz",
656
+ "integrity": "sha512-Tskp4L/rWHENe3RRmuLLXZ1p808OB/HS07bAPGd/vqJvY8QcMM5Bb+H4JWT/Dyho43Z85Xtp5FwqAwkPDVVruw==",
656
657
  "license": "SEE LICENSE IN LICENSE.txt",
657
658
  "dependencies": {
658
659
  "content-security-policy-parser": "^0.6.0"
@@ -702,16 +703,16 @@
702
703
  }
703
704
  },
704
705
  "node_modules/@forge/lint": {
705
- "version": "6.0.2-next.5-experimental-a1600ff",
706
- "resolved": "https://registry.npmjs.org/@forge/lint/-/lint-6.0.2-next.5-experimental-a1600ff.tgz",
707
- "integrity": "sha512-MO/zoE/oojayAzV+HoGxEjjiXenE32E53KazrsBdrx/zFkMaIeJhu5nm0ns3IWu/5j7ELar6xjluRvmT3cLwdQ==",
706
+ "version": "6.0.3-next.0-experimental-620648d",
707
+ "resolved": "https://registry.npmjs.org/@forge/lint/-/lint-6.0.3-next.0-experimental-620648d.tgz",
708
+ "integrity": "sha512-SNVpgdB6Y+703Wr/lgMDGGLJBsYjjp2wVtNS+fRCp3LenyUchbb/+JA86N7TNhwdQggyq+9sOB0ejAt4wEzGuQ==",
708
709
  "license": "SEE LICENSE IN LICENSE.txt",
709
710
  "dependencies": {
710
711
  "@atlassian/atlassian-openapi": "^1.0.6",
711
- "@forge/cli-shared": "9.2.0-next.5-experimental-a1600ff",
712
- "@forge/csp": "6.1.0-experimental-a1600ff",
712
+ "@forge/cli-shared": "9.3.0-next.0-experimental-620648d",
713
+ "@forge/csp": "6.2.0-experimental-620648d",
713
714
  "@forge/egress": "3.0.0",
714
- "@forge/manifest": "13.1.1-next.2-experimental-a1600ff",
715
+ "@forge/manifest": "13.3.0-next.0-experimental-620648d",
715
716
  "@typescript-eslint/typescript-estree": "^5.62.0",
716
717
  "array.prototype.flatmap": "^1.3.3",
717
718
  "cross-spawn": "^7.0.6",
@@ -728,9 +729,9 @@
728
729
  }
729
730
  },
730
731
  "node_modules/@forge/manifest": {
731
- "version": "13.1.1-next.2-experimental-a1600ff",
732
- "resolved": "https://registry.npmjs.org/@forge/manifest/-/manifest-13.1.1-next.2-experimental-a1600ff.tgz",
733
- "integrity": "sha512-btDIFOLoQ730BGd/SobumZSP3AO4vEghl5L2TRlmoY3zv7FjzkAMdGNUzQ0djeaEuflbQWl9bgBSPSxy7QjCsA==",
732
+ "version": "13.3.0-next.0-experimental-620648d",
733
+ "resolved": "https://registry.npmjs.org/@forge/manifest/-/manifest-13.3.0-next.0-experimental-620648d.tgz",
734
+ "integrity": "sha512-vUJRVXP9NuQTV532up1UpTxP5gcTdLQNmnCZ/t3WhaDngUSFnpQaR5/QQNr+rbmMZJUx0/QAY6cd71LGEbbylg==",
734
735
  "license": "SEE LICENSE IN LICENSE.txt",
735
736
  "dependencies": {
736
737
  "@forge/i18n": "1.0.0",
@@ -767,14 +768,14 @@
767
768
  }
768
769
  },
769
770
  "node_modules/@forge/tunnel": {
770
- "version": "7.0.2-next.5-experimental-a1600ff",
771
- "resolved": "https://registry.npmjs.org/@forge/tunnel/-/tunnel-7.0.2-next.5-experimental-a1600ff.tgz",
772
- "integrity": "sha512-8Xky6rg3TET5jId5vsYzxX/oICuYU5c46FT/fgUXutTpaKCVTfHTJUhQ8EH3HiX1jEOWynHN/srBnJYi45SN4w==",
771
+ "version": "7.1.0-next.0-experimental-620648d",
772
+ "resolved": "https://registry.npmjs.org/@forge/tunnel/-/tunnel-7.1.0-next.0-experimental-620648d.tgz",
773
+ "integrity": "sha512-q4W7LwUa5oLqLqD3LB1wslee/VAi2SWLLAlRdIyl7VNdYmhgEAovFWMNcDaQGUyTES6f7aScfQZ3cS4nV+vYTw==",
773
774
  "license": "SEE LICENSE IN LICENSE.txt",
774
775
  "dependencies": {
775
- "@forge/bundler": "7.0.2-next.5-experimental-a1600ff",
776
- "@forge/cli-shared": "9.2.0-next.5-experimental-a1600ff",
777
- "@forge/csp": "6.1.0-experimental-a1600ff",
776
+ "@forge/bundler": "7.0.3-next.0-experimental-620648d",
777
+ "@forge/cli-shared": "9.3.0-next.0-experimental-620648d",
778
+ "@forge/csp": "6.2.0-experimental-620648d",
778
779
  "@forge/runtime": "7.0.0",
779
780
  "@forge/util": "^3.0.0",
780
781
  "cheerio": "^1.2.0",
@@ -5442,6 +5443,24 @@
5442
5443
  "node": ">=12.0.0"
5443
5444
  }
5444
5445
  },
5446
+ "node_modules/inquirer-autocomplete-prompt": {
5447
+ "version": "2.0.1",
5448
+ "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-2.0.1.tgz",
5449
+ "integrity": "sha1-coaKraTZ02gUpgVMvR7OzGOqsMY= sha512-jUHrH0btO7j5r8DTQgANf2CBkTZChoVySD8zF/wp5fZCOLIuUbleXhf4ZY5jNBOc1owA3gdfWtfZuppfYBhcUg==",
5450
+ "dependencies": {
5451
+ "ansi-escapes": "^4.3.2",
5452
+ "figures": "^3.2.0",
5453
+ "picocolors": "^1.0.0",
5454
+ "run-async": "^2.4.1",
5455
+ "rxjs": "^7.5.4"
5456
+ },
5457
+ "engines": {
5458
+ "node": ">=12"
5459
+ },
5460
+ "peerDependencies": {
5461
+ "inquirer": "^8.0.0"
5462
+ }
5463
+ },
5445
5464
  "node_modules/inquirer/node_modules/wrap-ansi": {
5446
5465
  "version": "6.2.0",
5447
5466
  "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -1,6 +1,6 @@
1
1
  import { AppConfigProvider, AppEnvironmentType, ConfigFile, StatsigService, SupportedProduct, SupportedProductsService, UI } from '@forge/cli-shared';
2
- import { DevSpaceService } from '../../devspace';
3
2
  import { URL } from 'url';
3
+ import { DevSpaceService } from '../../devspace';
4
4
  import { InstallAppSiteCommand } from '../../installations/install-app-site';
5
5
  import { InstallationService } from '../../service/installation-service';
6
6
  import { InstallView } from '../view/install-view';
@@ -49,6 +49,9 @@ export declare class InstallController {
49
49
  isNonProductionAppInstallationAttempt(site: URL, products: SupportedProduct[], environmentType: AppEnvironmentType): Promise<boolean>;
50
50
  private checkProductEntitlementOffering;
51
51
  private getAllScopeKeys;
52
+ private toAppResourceId;
53
+ private getModuleInstances;
54
+ private getInstallSuccessDeeplinks;
52
55
  private extractManifestData;
53
56
  private getXPAProductsAndSite;
54
57
  private checkForMultiProductScopes;
@@ -1 +1 @@
1
- {"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":"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"}
@@ -214,6 +214,7 @@ class InstallController {
214
214
  const overrides = await this.validateEcosystemAppInstallationOverridesInput(licenseModes, usersWithAccess, environment);
215
215
  let environmentPermissions;
216
216
  let requiredProducts;
217
+ let appFeatures;
217
218
  if (majorVersion) {
218
219
  const majorVersionResult = await this.getVersionPermissionsByMajorVersion(id, environment, majorVersion);
219
220
  if (!isUpgrade && !majorVersionResult.isLatest && majorVersionResult.version) {
@@ -223,10 +224,12 @@ class InstallController {
223
224
  }
224
225
  environmentPermissions = majorVersionResult;
225
226
  requiredProducts = majorVersionResult.requiredProducts;
227
+ appFeatures = majorVersionResult.appFeatures;
226
228
  }
227
229
  else {
228
230
  environmentPermissions = await this.installationService.getAppEnvironmentPermissions(id, environment);
229
231
  requiredProducts = environmentPermissions?.requiredProducts;
232
+ appFeatures = environmentPermissions?.appFeatures;
230
233
  }
231
234
  let scopesFromLastInstallation = new Set();
232
235
  let egressFromLastInstallation = new Set();
@@ -252,7 +255,7 @@ class InstallController {
252
255
  products = result.products;
253
256
  this.ui.info(cli_shared_1.Text.install.installConfirmation(products.join(', '), site.host));
254
257
  }
255
- if ((0, cli_shared_1.isSecureSite)(site)) {
258
+ if ((0, cli_shared_1.isSecureSite)(site) && !(0, cli_shared_1.isPersonalApp)(appFeatures)) {
256
259
  await this.securityPrompt(site);
257
260
  }
258
261
  if (!environmentPermissions?.hasDeployments) {
@@ -262,12 +265,14 @@ class InstallController {
262
265
  const { scopes: environmentScopes, egressAddresses: environmentEgressAddresses, environmentType } = environmentPermissions;
263
266
  let manifestScopes = new Set(environmentScopes);
264
267
  let manifestEgressAddresses = [...environmentEgressAddresses];
268
+ let manifestModules;
265
269
  if (!appIdOverride) {
266
270
  const [{ permissions, modules }, manifestEgressEntries] = await Promise.all([
267
271
  this.configFile.readConfig(),
268
272
  this.configFile.getEgressPermissions()
269
273
  ]);
270
274
  this.checkForUIKit1Modules(modules);
275
+ manifestModules = modules;
271
276
  ({ manifestEgressAddresses, manifestScopes } = this.extractManifestData(manifestEgressEntries, permissions));
272
277
  }
273
278
  const differenceInScopes = environmentScopes.filter((x) => !scopesFromLastInstallation.has(x));
@@ -312,6 +317,16 @@ class InstallController {
312
317
  }
313
318
  else {
314
319
  this.ui.info(text.success.banner(environment, environmentType, (0, cli_shared_1.productDisplayName)(successfulProducts.join(', ')), site.host));
320
+ const deeplinks = this.getInstallSuccessDeeplinks({
321
+ site,
322
+ appId: id,
323
+ environmentId: environmentPermissions.environmentId,
324
+ modules: manifestModules,
325
+ successfulProducts
326
+ });
327
+ if (deeplinks.length > 0) {
328
+ this.ui.info(cli_shared_1.Text.install.success.deeplinks(deeplinks));
329
+ }
315
330
  }
316
331
  }
317
332
  else if (!isUpgrade) {
@@ -355,6 +370,75 @@ class InstallController {
355
370
  getAllScopeKeys = (scopes) => {
356
371
  return Array.isArray(scopes) ? scopes : Object.keys(scopes);
357
372
  };
373
+ toAppResourceId = (appId) => {
374
+ const appIdParts = appId.split('/');
375
+ return appIdParts[appIdParts.length - 1] || appId;
376
+ };
377
+ getModuleInstances = (modules, moduleName) => {
378
+ const entries = modules?.[moduleName];
379
+ if (!Array.isArray(entries)) {
380
+ return [];
381
+ }
382
+ return entries.filter((entry) => typeof entry === 'object' && entry !== null);
383
+ };
384
+ getInstallSuccessDeeplinks = ({ site, appId, environmentId, modules, successfulProducts }) => {
385
+ if (!environmentId || !modules) {
386
+ return [];
387
+ }
388
+ const successfulProductsLower = new Set(successfulProducts.map((value) => value.toLowerCase()));
389
+ const appResourceId = this.toAppResourceId(appId);
390
+ const siteBase = `${site.protocol}//${site.host}`;
391
+ const derivedLinks = [];
392
+ if (successfulProductsLower.has('jira')) {
393
+ const [jiraGlobalPage] = this.getModuleInstances(modules, 'jira:globalPage');
394
+ if (jiraGlobalPage) {
395
+ derivedLinks.push({
396
+ moduleType: 'jira:globalPage',
397
+ moduleKey: jiraGlobalPage.key,
398
+ url: `${siteBase}/jira/apps/${appResourceId}/${environmentId}`
399
+ });
400
+ }
401
+ const [jiraAdminPage] = this.getModuleInstances(modules, 'jira:adminPage');
402
+ if (jiraAdminPage) {
403
+ derivedLinks.push({
404
+ moduleType: 'jira:adminPage',
405
+ moduleKey: jiraAdminPage.key,
406
+ url: `${siteBase}/jira/settings/apps/${appResourceId}/${environmentId}`
407
+ });
408
+ }
409
+ }
410
+ if (successfulProductsLower.has('confluence')) {
411
+ for (const moduleInstance of this.getModuleInstances(modules, 'confluence:globalPage')) {
412
+ if (!moduleInstance.key) {
413
+ continue;
414
+ }
415
+ const confluenceRoute = moduleInstance.route;
416
+ if (!confluenceRoute) {
417
+ continue;
418
+ }
419
+ derivedLinks.push({
420
+ moduleType: 'confluence:globalPage',
421
+ moduleKey: moduleInstance.key,
422
+ url: `${siteBase}/wiki/apps/${appResourceId}/${environmentId}/${encodeURIComponent(confluenceRoute)}`
423
+ });
424
+ }
425
+ }
426
+ const [globalUiModule] = this.getModuleInstances(modules, 'global:ui');
427
+ if (globalUiModule) {
428
+ derivedLinks.push({
429
+ moduleType: 'global:ui',
430
+ moduleKey: globalUiModule.key,
431
+ url: `${siteBase}/apps/a/${appResourceId}/e/${environmentId}`
432
+ });
433
+ }
434
+ if (derivedLinks.length === 1) {
435
+ return [{ url: derivedLinks[0].url }];
436
+ }
437
+ return derivedLinks.map((link) => ({
438
+ label: link.moduleKey ? `${link.moduleType} (${link.moduleKey})` : link.moduleType,
439
+ url: link.url
440
+ }));
441
+ };
358
442
  extractManifestData = (manifestEgressEntries, permissions) => {
359
443
  const manifestEgressAddresses = (0, cli_shared_1.flatMap)(manifestEgressEntries, ({ domains }) => domains ?? []);
360
444
  const manifestScopes = new Set(this.getAllScopeKeys(permissions?.scopes ?? []));