@forge/cli 6.3.0-next.6 → 6.3.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/CHANGELOG.md +36 -0
- package/npm-shrinkwrap.json +70 -72
- package/out/command-line/controller/prerequisites-controller.js +1 -1
- package/out/command-line/dependency-injection.d.ts +2 -0
- package/out/command-line/dependency-injection.d.ts.map +1 -1
- package/out/command-line/dependency-injection.js +3 -0
- package/out/command-line/index.js +1 -1
- package/out/command-line/register-contributors-commands.d.ts.map +1 -1
- package/out/command-line/register-contributors-commands.js +60 -0
- package/out/contributors/graphql-client.d.ts +3 -1
- package/out/contributors/graphql-client.d.ts.map +1 -1
- package/out/contributors/graphql-client.js +34 -1
- package/out/contributors/remove-contributors.d.ts +18 -0
- package/out/contributors/remove-contributors.d.ts.map +1 -0
- package/out/contributors/remove-contributors.js +14 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @forge/cli
|
|
2
2
|
|
|
3
|
+
## 6.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- cfded19: Added "forge contributors remove" command
|
|
8
|
+
- 814c1f1: Add 'contributors list' command to forge-cli for MUAO EAP Participants
|
|
9
|
+
- e37918e: Implement support for client-side UI Kit tunneling
|
|
10
|
+
- cfe17b8: Update supported Nodejs LTS version
|
|
11
|
+
- ac570166: Added "forge contributors add" command line
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [269a493]
|
|
16
|
+
- Updated dependencies [cfded19]
|
|
17
|
+
- Updated dependencies [814c1f1]
|
|
18
|
+
- Updated dependencies [e37918e]
|
|
19
|
+
- Updated dependencies [05fb30c]
|
|
20
|
+
- Updated dependencies [ac570166]
|
|
21
|
+
- @forge/manifest@4.5.2
|
|
22
|
+
- @forge/cli-shared@3.4.0
|
|
23
|
+
- @forge/bundler@4.1.0
|
|
24
|
+
- @forge/lint@3.2.11
|
|
25
|
+
|
|
26
|
+
## 6.3.0-next.7
|
|
27
|
+
|
|
28
|
+
### Minor Changes
|
|
29
|
+
|
|
30
|
+
- cfded19: Added "forge contributors remove" command
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- Updated dependencies [cfded19]
|
|
35
|
+
- @forge/cli-shared@3.4.0-next.4
|
|
36
|
+
- @forge/bundler@4.1.0-next.6
|
|
37
|
+
- @forge/lint@3.2.11-next.4
|
|
38
|
+
|
|
3
39
|
## 6.3.0-next.6
|
|
4
40
|
|
|
5
41
|
### Minor Changes
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/cli",
|
|
3
|
-
"version": "6.3.0
|
|
3
|
+
"version": "6.3.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@forge/cli",
|
|
9
|
-
"version": "6.3.0
|
|
9
|
+
"version": "6.3.0",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "UNLICENSED",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@forge/bundler": "4.1.0
|
|
14
|
-
"@forge/cli-shared": "3.4.0
|
|
13
|
+
"@forge/bundler": "4.1.0",
|
|
14
|
+
"@forge/cli-shared": "3.4.0",
|
|
15
15
|
"@forge/egress": "^1.1.1",
|
|
16
|
-
"@forge/lint": "3.2.11
|
|
17
|
-
"@forge/manifest": "4.5.2
|
|
16
|
+
"@forge/lint": "3.2.11",
|
|
17
|
+
"@forge/manifest": "4.5.2",
|
|
18
18
|
"@forge/util": "1.2.0",
|
|
19
19
|
"ajv": "^6.12.5",
|
|
20
20
|
"archiver": "^5.2.0",
|
|
@@ -634,6 +634,17 @@
|
|
|
634
634
|
"node": ">=10.0.0"
|
|
635
635
|
}
|
|
636
636
|
},
|
|
637
|
+
"node_modules/@forge/api": {
|
|
638
|
+
"version": "2.9.0",
|
|
639
|
+
"resolved": "https://registry.npmjs.org/@forge/api/-/api-2.9.0.tgz",
|
|
640
|
+
"integrity": "sha512-nwu3VJ84NdtyxwIind5d+hmIodwRi4xPG0n+gCEpLVjg7yN9qCQoS6B7/6TImSq8vHPPg+pKZLRraU3AjHc3Pw==",
|
|
641
|
+
"dependencies": {
|
|
642
|
+
"@forge/auth": "^0.0.1",
|
|
643
|
+
"@forge/storage": "^1.3.1",
|
|
644
|
+
"@types/node-fetch": "^2.5.7",
|
|
645
|
+
"node-fetch": "2.6.7"
|
|
646
|
+
}
|
|
647
|
+
},
|
|
637
648
|
"node_modules/@forge/auth": {
|
|
638
649
|
"version": "0.0.1",
|
|
639
650
|
"resolved": "https://registry.npmjs.org/@forge/auth/-/auth-0.0.1.tgz",
|
|
@@ -653,9 +664,9 @@
|
|
|
653
664
|
"integrity": "sha512-+GFtFqBhFzwKaKmeEfw1jWQgZJNX4q11CCx1fSPFJB49Fdjb7k3lx74jAyzHlX0UWnm6DMK+/cYT7j5t6G9LfA=="
|
|
654
665
|
},
|
|
655
666
|
"node_modules/@forge/bundler": {
|
|
656
|
-
"version": "4.1.0
|
|
657
|
-
"resolved": "https://registry.npmjs.org/@forge/bundler/-/bundler-4.1.0
|
|
658
|
-
"integrity": "sha512-
|
|
667
|
+
"version": "4.1.0",
|
|
668
|
+
"resolved": "https://registry.npmjs.org/@forge/bundler/-/bundler-4.1.0.tgz",
|
|
669
|
+
"integrity": "sha512-yQow+EDuu9GXQMLaIOMGFtlFQOFjclBdjc99FGd2on45zzWIcp5qQAveI+JSXMf+qgfr+pqdNZiKkgn8FHcvMQ==",
|
|
659
670
|
"dependencies": {
|
|
660
671
|
"@babel/core": "^7.16.7",
|
|
661
672
|
"@babel/plugin-proposal-class-properties": "^7.16.7",
|
|
@@ -663,10 +674,10 @@
|
|
|
663
674
|
"@babel/plugin-proposal-optional-chaining": "^7.16.7",
|
|
664
675
|
"@babel/plugin-transform-react-jsx": "^7.16.7",
|
|
665
676
|
"@babel/preset-typescript": "^7.16.7",
|
|
666
|
-
"@forge/api": "2.9.0
|
|
677
|
+
"@forge/api": "2.9.0",
|
|
667
678
|
"@forge/babel-plugin-transform-ui": "1.1.0",
|
|
668
|
-
"@forge/cli-shared": "3.4.0
|
|
669
|
-
"@forge/lint": "3.2.11
|
|
679
|
+
"@forge/cli-shared": "3.4.0",
|
|
680
|
+
"@forge/lint": "3.2.11",
|
|
670
681
|
"assert": "^1.1.1",
|
|
671
682
|
"babel-loader": "^8.2.3",
|
|
672
683
|
"browserify-zlib": "^0.2.0",
|
|
@@ -699,23 +710,12 @@
|
|
|
699
710
|
"node": ">=12.13.1"
|
|
700
711
|
}
|
|
701
712
|
},
|
|
702
|
-
"node_modules/@forge/bundler/node_modules/@forge/api": {
|
|
703
|
-
"version": "2.9.0-next.0",
|
|
704
|
-
"resolved": "https://registry.npmjs.org/@forge/api/-/api-2.9.0-next.0.tgz",
|
|
705
|
-
"integrity": "sha512-mp2bNP8Sq7gBc38qfcAaGbzl2uu0QKPxMHIkRz3p3Z6LaDN94xIB7LA+ecs3eWCpXN1bFjaI0aSCqQ+4xcNVow==",
|
|
706
|
-
"dependencies": {
|
|
707
|
-
"@forge/auth": "^0.0.1",
|
|
708
|
-
"@forge/storage": "^1.3.1",
|
|
709
|
-
"@types/node-fetch": "^2.5.7",
|
|
710
|
-
"node-fetch": "2.6.7"
|
|
711
|
-
}
|
|
712
|
-
},
|
|
713
713
|
"node_modules/@forge/cli-shared": {
|
|
714
|
-
"version": "3.4.0
|
|
715
|
-
"resolved": "https://registry.npmjs.org/@forge/cli-shared/-/cli-shared-3.4.0
|
|
716
|
-
"integrity": "sha512
|
|
714
|
+
"version": "3.4.0",
|
|
715
|
+
"resolved": "https://registry.npmjs.org/@forge/cli-shared/-/cli-shared-3.4.0.tgz",
|
|
716
|
+
"integrity": "sha512-lq17fBZmv+C1oyU/7ichIFAtBgrm6P0cR+C0LC6W+PEpROycTXhl0GyKG4fwe+Cib/DQRvAOIYfnMrESEBkxRA==",
|
|
717
717
|
"dependencies": {
|
|
718
|
-
"@forge/manifest": "4.5.2
|
|
718
|
+
"@forge/manifest": "4.5.2",
|
|
719
719
|
"@forge/util": "1.2.0",
|
|
720
720
|
"array.prototype.flatmap": "^1.2.3",
|
|
721
721
|
"case": "^1.6.2",
|
|
@@ -756,13 +756,13 @@
|
|
|
756
756
|
}
|
|
757
757
|
},
|
|
758
758
|
"node_modules/@forge/lint": {
|
|
759
|
-
"version": "3.2.11
|
|
760
|
-
"resolved": "https://registry.npmjs.org/@forge/lint/-/lint-3.2.11
|
|
761
|
-
"integrity": "sha512-
|
|
759
|
+
"version": "3.2.11",
|
|
760
|
+
"resolved": "https://registry.npmjs.org/@forge/lint/-/lint-3.2.11.tgz",
|
|
761
|
+
"integrity": "sha512-behuGIhZhMmnavg2ujP8teSEXoUxKltMtuRSh2DJTntIxERKe5uevo3cAhb4N1+cENVO0xdAJ1wWTQJJsuCPQw==",
|
|
762
762
|
"dependencies": {
|
|
763
|
-
"@forge/cli-shared": "3.4.0
|
|
763
|
+
"@forge/cli-shared": "3.4.0",
|
|
764
764
|
"@forge/egress": "^1.1.1",
|
|
765
|
-
"@forge/manifest": "4.5.2
|
|
765
|
+
"@forge/manifest": "4.5.2",
|
|
766
766
|
"@typescript-eslint/typescript-estree": "^5.40.0",
|
|
767
767
|
"atlassian-openapi": "^1.0.13",
|
|
768
768
|
"cross-spawn": "^7.0.1",
|
|
@@ -770,9 +770,9 @@
|
|
|
770
770
|
}
|
|
771
771
|
},
|
|
772
772
|
"node_modules/@forge/manifest": {
|
|
773
|
-
"version": "4.5.2
|
|
774
|
-
"resolved": "https://registry.npmjs.org/@forge/manifest/-/manifest-4.5.2
|
|
775
|
-
"integrity": "sha512-
|
|
773
|
+
"version": "4.5.2",
|
|
774
|
+
"resolved": "https://registry.npmjs.org/@forge/manifest/-/manifest-4.5.2.tgz",
|
|
775
|
+
"integrity": "sha512-1t5f/hT6XF8QoUPGYsOLQgzY/5yCpAvnZgnLZBpr4Ts2aF9vH6XyAHLJfoKhDwfuy7w3PPQRpvZ3wUtnGjA8tA==",
|
|
776
776
|
"dependencies": {
|
|
777
777
|
"@forge/util": "1.2.0",
|
|
778
778
|
"ajv": "^6.12.5",
|
|
@@ -1833,9 +1833,9 @@
|
|
|
1833
1833
|
}
|
|
1834
1834
|
},
|
|
1835
1835
|
"node_modules/caniuse-lite": {
|
|
1836
|
-
"version": "1.0.
|
|
1837
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
1838
|
-
"integrity": "sha512-
|
|
1836
|
+
"version": "1.0.30001436",
|
|
1837
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz",
|
|
1838
|
+
"integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==",
|
|
1839
1839
|
"funding": [
|
|
1840
1840
|
{
|
|
1841
1841
|
"type": "opencollective",
|
|
@@ -7773,6 +7773,17 @@
|
|
|
7773
7773
|
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz",
|
|
7774
7774
|
"integrity": "sha1-1eBwbPjGrNjGAy+NVAcK8mG7uy8= sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA=="
|
|
7775
7775
|
},
|
|
7776
|
+
"@forge/api": {
|
|
7777
|
+
"version": "2.9.0",
|
|
7778
|
+
"resolved": "https://registry.npmjs.org/@forge/api/-/api-2.9.0.tgz",
|
|
7779
|
+
"integrity": "sha512-nwu3VJ84NdtyxwIind5d+hmIodwRi4xPG0n+gCEpLVjg7yN9qCQoS6B7/6TImSq8vHPPg+pKZLRraU3AjHc3Pw==",
|
|
7780
|
+
"requires": {
|
|
7781
|
+
"@forge/auth": "^0.0.1",
|
|
7782
|
+
"@forge/storage": "^1.3.1",
|
|
7783
|
+
"@types/node-fetch": "^2.5.7",
|
|
7784
|
+
"node-fetch": "2.6.7"
|
|
7785
|
+
}
|
|
7786
|
+
},
|
|
7776
7787
|
"@forge/auth": {
|
|
7777
7788
|
"version": "0.0.1",
|
|
7778
7789
|
"resolved": "https://registry.npmjs.org/@forge/auth/-/auth-0.0.1.tgz",
|
|
@@ -7794,9 +7805,9 @@
|
|
|
7794
7805
|
"integrity": "sha512-+GFtFqBhFzwKaKmeEfw1jWQgZJNX4q11CCx1fSPFJB49Fdjb7k3lx74jAyzHlX0UWnm6DMK+/cYT7j5t6G9LfA=="
|
|
7795
7806
|
},
|
|
7796
7807
|
"@forge/bundler": {
|
|
7797
|
-
"version": "4.1.0
|
|
7798
|
-
"resolved": "https://registry.npmjs.org/@forge/bundler/-/bundler-4.1.0
|
|
7799
|
-
"integrity": "sha512-
|
|
7808
|
+
"version": "4.1.0",
|
|
7809
|
+
"resolved": "https://registry.npmjs.org/@forge/bundler/-/bundler-4.1.0.tgz",
|
|
7810
|
+
"integrity": "sha512-yQow+EDuu9GXQMLaIOMGFtlFQOFjclBdjc99FGd2on45zzWIcp5qQAveI+JSXMf+qgfr+pqdNZiKkgn8FHcvMQ==",
|
|
7800
7811
|
"requires": {
|
|
7801
7812
|
"@babel/core": "^7.16.7",
|
|
7802
7813
|
"@babel/plugin-proposal-class-properties": "^7.16.7",
|
|
@@ -7804,10 +7815,10 @@
|
|
|
7804
7815
|
"@babel/plugin-proposal-optional-chaining": "^7.16.7",
|
|
7805
7816
|
"@babel/plugin-transform-react-jsx": "^7.16.7",
|
|
7806
7817
|
"@babel/preset-typescript": "^7.16.7",
|
|
7807
|
-
"@forge/api": "2.9.0
|
|
7818
|
+
"@forge/api": "2.9.0",
|
|
7808
7819
|
"@forge/babel-plugin-transform-ui": "1.1.0",
|
|
7809
|
-
"@forge/cli-shared": "3.4.0
|
|
7810
|
-
"@forge/lint": "3.2.11
|
|
7820
|
+
"@forge/cli-shared": "3.4.0",
|
|
7821
|
+
"@forge/lint": "3.2.11",
|
|
7811
7822
|
"assert": "^1.1.1",
|
|
7812
7823
|
"babel-loader": "^8.2.3",
|
|
7813
7824
|
"browserify-zlib": "^0.2.0",
|
|
@@ -7835,27 +7846,14 @@
|
|
|
7835
7846
|
"webpack": "^5.66.0",
|
|
7836
7847
|
"webpack-bundle-analyzer": "^4.5.0",
|
|
7837
7848
|
"whatwg-url": "^7.0.0"
|
|
7838
|
-
},
|
|
7839
|
-
"dependencies": {
|
|
7840
|
-
"@forge/api": {
|
|
7841
|
-
"version": "2.9.0-next.0",
|
|
7842
|
-
"resolved": "https://registry.npmjs.org/@forge/api/-/api-2.9.0-next.0.tgz",
|
|
7843
|
-
"integrity": "sha512-mp2bNP8Sq7gBc38qfcAaGbzl2uu0QKPxMHIkRz3p3Z6LaDN94xIB7LA+ecs3eWCpXN1bFjaI0aSCqQ+4xcNVow==",
|
|
7844
|
-
"requires": {
|
|
7845
|
-
"@forge/auth": "^0.0.1",
|
|
7846
|
-
"@forge/storage": "^1.3.1",
|
|
7847
|
-
"@types/node-fetch": "^2.5.7",
|
|
7848
|
-
"node-fetch": "2.6.7"
|
|
7849
|
-
}
|
|
7850
|
-
}
|
|
7851
7849
|
}
|
|
7852
7850
|
},
|
|
7853
7851
|
"@forge/cli-shared": {
|
|
7854
|
-
"version": "3.4.0
|
|
7855
|
-
"resolved": "https://registry.npmjs.org/@forge/cli-shared/-/cli-shared-3.4.0
|
|
7856
|
-
"integrity": "sha512
|
|
7852
|
+
"version": "3.4.0",
|
|
7853
|
+
"resolved": "https://registry.npmjs.org/@forge/cli-shared/-/cli-shared-3.4.0.tgz",
|
|
7854
|
+
"integrity": "sha512-lq17fBZmv+C1oyU/7ichIFAtBgrm6P0cR+C0LC6W+PEpROycTXhl0GyKG4fwe+Cib/DQRvAOIYfnMrESEBkxRA==",
|
|
7857
7855
|
"requires": {
|
|
7858
|
-
"@forge/manifest": "4.5.2
|
|
7856
|
+
"@forge/manifest": "4.5.2",
|
|
7859
7857
|
"@forge/util": "1.2.0",
|
|
7860
7858
|
"array.prototype.flatmap": "^1.2.3",
|
|
7861
7859
|
"case": "^1.6.2",
|
|
@@ -7896,13 +7894,13 @@
|
|
|
7896
7894
|
}
|
|
7897
7895
|
},
|
|
7898
7896
|
"@forge/lint": {
|
|
7899
|
-
"version": "3.2.11
|
|
7900
|
-
"resolved": "https://registry.npmjs.org/@forge/lint/-/lint-3.2.11
|
|
7901
|
-
"integrity": "sha512-
|
|
7897
|
+
"version": "3.2.11",
|
|
7898
|
+
"resolved": "https://registry.npmjs.org/@forge/lint/-/lint-3.2.11.tgz",
|
|
7899
|
+
"integrity": "sha512-behuGIhZhMmnavg2ujP8teSEXoUxKltMtuRSh2DJTntIxERKe5uevo3cAhb4N1+cENVO0xdAJ1wWTQJJsuCPQw==",
|
|
7902
7900
|
"requires": {
|
|
7903
|
-
"@forge/cli-shared": "3.4.0
|
|
7901
|
+
"@forge/cli-shared": "3.4.0",
|
|
7904
7902
|
"@forge/egress": "^1.1.1",
|
|
7905
|
-
"@forge/manifest": "4.5.2
|
|
7903
|
+
"@forge/manifest": "4.5.2",
|
|
7906
7904
|
"@typescript-eslint/typescript-estree": "^5.40.0",
|
|
7907
7905
|
"atlassian-openapi": "^1.0.13",
|
|
7908
7906
|
"cross-spawn": "^7.0.1",
|
|
@@ -7910,9 +7908,9 @@
|
|
|
7910
7908
|
}
|
|
7911
7909
|
},
|
|
7912
7910
|
"@forge/manifest": {
|
|
7913
|
-
"version": "4.5.2
|
|
7914
|
-
"resolved": "https://registry.npmjs.org/@forge/manifest/-/manifest-4.5.2
|
|
7915
|
-
"integrity": "sha512-
|
|
7911
|
+
"version": "4.5.2",
|
|
7912
|
+
"resolved": "https://registry.npmjs.org/@forge/manifest/-/manifest-4.5.2.tgz",
|
|
7913
|
+
"integrity": "sha512-1t5f/hT6XF8QoUPGYsOLQgzY/5yCpAvnZgnLZBpr4Ts2aF9vH6XyAHLJfoKhDwfuy7w3PPQRpvZ3wUtnGjA8tA==",
|
|
7916
7914
|
"requires": {
|
|
7917
7915
|
"@forge/util": "1.2.0",
|
|
7918
7916
|
"ajv": "^6.12.5",
|
|
@@ -8781,9 +8779,9 @@
|
|
|
8781
8779
|
}
|
|
8782
8780
|
},
|
|
8783
8781
|
"caniuse-lite": {
|
|
8784
|
-
"version": "1.0.
|
|
8785
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
8786
|
-
"integrity": "sha512-
|
|
8782
|
+
"version": "1.0.30001436",
|
|
8783
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz",
|
|
8784
|
+
"integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg=="
|
|
8787
8785
|
},
|
|
8788
8786
|
"case": {
|
|
8789
8787
|
"version": "1.6.3",
|
|
@@ -14,7 +14,7 @@ class PrerequisitesController {
|
|
|
14
14
|
async check() {
|
|
15
15
|
this.checkNodeVersion();
|
|
16
16
|
await this.checkCustomWarning();
|
|
17
|
-
const muaoEnabled = await this.checkMUAOEnabled();
|
|
17
|
+
const muaoEnabled = (await this.checkMUAOEnabled()) || process.env.ENABLE_MUAO === 'true';
|
|
18
18
|
return {
|
|
19
19
|
muaoEnabled
|
|
20
20
|
};
|
|
@@ -7,6 +7,7 @@ import { SetEnvironmentVariableCommand } from '../environment-variables/set-envi
|
|
|
7
7
|
import { ConfigureProviderCommand } from '../providers/configure-provider';
|
|
8
8
|
import { AddContributorCommand } from '../contributors/add-contributor';
|
|
9
9
|
import { ListContributorsCommand } from '../contributors/list-contributors';
|
|
10
|
+
import { RemoveContributorsCommand } from '../contributors/remove-contributors';
|
|
10
11
|
import { InstallAppSiteCommand } from '../installations/install-app-site';
|
|
11
12
|
import { UninstallAppCommand } from '../installations/uninstall-app';
|
|
12
13
|
import { InstallationService } from '../service/installation-service';
|
|
@@ -46,6 +47,7 @@ export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Pr
|
|
|
46
47
|
configureProviderCommand: ConfigureProviderCommand;
|
|
47
48
|
addContributorCommand: AddContributorCommand;
|
|
48
49
|
listContributorCommand: ListContributorsCommand;
|
|
50
|
+
removeContributorsCommand: RemoveContributorsCommand;
|
|
49
51
|
viewAppLogsCommand: ViewAppLogsCommand;
|
|
50
52
|
getWebTriggerURLCommand: GetWebTriggerURLCommand;
|
|
51
53
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAEA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAUlB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAEA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAUlB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAMhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAWlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAIhF,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0QvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
|
|
@@ -16,6 +16,7 @@ const configure_provider_1 = require("../providers/configure-provider");
|
|
|
16
16
|
const graphql_client_3 = require("../providers/graphql-client");
|
|
17
17
|
const add_contributor_1 = require("../contributors/add-contributor");
|
|
18
18
|
const list_contributors_1 = require("../contributors/list-contributors");
|
|
19
|
+
const remove_contributors_1 = require("../contributors/remove-contributors");
|
|
19
20
|
const graphql_client_4 = require("../contributors/graphql-client");
|
|
20
21
|
const graphql_client_5 = require("../installations/graphql-client");
|
|
21
22
|
const site_translation_1 = require("../installations/site-translation");
|
|
@@ -111,6 +112,7 @@ const getDependencies = async (cliDetails) => {
|
|
|
111
112
|
const contributorClient = new graphql_client_4.GraphqlClient(graphQLClient);
|
|
112
113
|
const addContributorCommand = new add_contributor_1.AddContributorCommand(contributorClient, assertiveAppConfigReader);
|
|
113
114
|
const listContributorCommand = new list_contributors_1.ListContributorsCommand(contributorClient, assertiveAppConfigReader);
|
|
115
|
+
const removeContributorsCommand = new remove_contributors_1.RemoveContributorsCommand(contributorClient, assertiveAppConfigReader);
|
|
114
116
|
const migrationKeysClient = new graphql_client_2.GraphqlClient(graphQLClient);
|
|
115
117
|
const migrationKeysService = new migration_keys_service_1.MigrationKeysService(migrationKeysClient, assertiveAppConfigReader);
|
|
116
118
|
const appEnvironmentClient = new cli_shared_1.AppEnvironmentsGraphqlClient(graphQLClient);
|
|
@@ -180,6 +182,7 @@ const getDependencies = async (cliDetails) => {
|
|
|
180
182
|
configureProviderCommand,
|
|
181
183
|
addContributorCommand,
|
|
182
184
|
listContributorCommand,
|
|
185
|
+
removeContributorsCommand,
|
|
183
186
|
viewAppLogsCommand,
|
|
184
187
|
getWebTriggerURLCommand
|
|
185
188
|
},
|
|
@@ -64,7 +64,7 @@ const main = async () => {
|
|
|
64
64
|
(0, exports.registerCommands)(deps, cliDetails);
|
|
65
65
|
registerEvents(deps);
|
|
66
66
|
const checkResult = await deps.controllers.prerequisitesController.check();
|
|
67
|
-
if (checkResult.muaoEnabled
|
|
67
|
+
if (checkResult.muaoEnabled) {
|
|
68
68
|
(0, register_contributors_commands_1.registerCommands)(deps);
|
|
69
69
|
sortCommands(deps.cmd);
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-contributors-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-contributors-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register-contributors-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-contributors-commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AA6KtD,eAAO,MAAM,gBAAgB,SAAU,YAAY,KAAG,IAOrD,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerCommands = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
4
5
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
6
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
5
7
|
const COMMAND_NAME = 'contributors';
|
|
6
8
|
const registerAddContributorCommand = (parent, { ui, commands: { addContributorCommand } }) => {
|
|
7
9
|
parent
|
|
@@ -65,10 +67,68 @@ const registerListContributorsCommand = (parent, { ui, commands: { listContribut
|
|
|
65
67
|
});
|
|
66
68
|
});
|
|
67
69
|
};
|
|
70
|
+
const registerRemoveContributorsCommand = (parent, { ui, commands: { listContributorCommand, removeContributorsCommand } }) => {
|
|
71
|
+
parent
|
|
72
|
+
.command('remove')
|
|
73
|
+
.requireAppId()
|
|
74
|
+
.description(cli_shared_1.Text.removeContributors.cmd.desc)
|
|
75
|
+
.option('-u, --email [emails...]', cli_shared_1.Text.removeContributors.optionContributorEmail)
|
|
76
|
+
.option('--confirm-remove-contributors', cli_shared_1.Text.removeContributors.optionSkipConfirmation)
|
|
77
|
+
.nonInteractiveOption('--email')
|
|
78
|
+
.action(async ({ email, confirmRemoveContributors, nonInteractive }) => {
|
|
79
|
+
let accountIds;
|
|
80
|
+
let accountReferences = email;
|
|
81
|
+
if (!email) {
|
|
82
|
+
const contributors = await listContributorCommand.execute();
|
|
83
|
+
const nonOwners = contributors.filter((contributor) => !contributor.isOwner);
|
|
84
|
+
if (nonOwners.length === 0) {
|
|
85
|
+
ui.info(cli_shared_1.Text.removeContributors.addContributorMessage);
|
|
86
|
+
ui.emptyLine();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const selectedContributorsIndexes = await ui.promptForTable(cli_shared_1.Text.removeContributors.promptContributorEmail, cli_shared_1.Text.removeContributors.overview, ['Name', 'Email'], nonOwners.map((contributor) => {
|
|
90
|
+
var _a;
|
|
91
|
+
const name = [contributor.publicName];
|
|
92
|
+
if (contributor.accountStatus !== 'active') {
|
|
93
|
+
name.push(cli_shared_1.Text.listContributors.userInactive);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
names: [name.join(' '), (_a = contributor.email) !== null && _a !== void 0 ? _a : 'Email Not Visible'],
|
|
97
|
+
value: contributor.accountId
|
|
98
|
+
};
|
|
99
|
+
}));
|
|
100
|
+
accountIds = selectedContributorsIndexes.map((index) => nonOwners[index].accountId);
|
|
101
|
+
accountReferences = selectedContributorsIndexes.map((index) => nonOwners[index].publicName);
|
|
102
|
+
}
|
|
103
|
+
if (!accountReferences) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (nonInteractive) {
|
|
107
|
+
confirmRemoveContributors = true;
|
|
108
|
+
}
|
|
109
|
+
if (!confirmRemoveContributors) {
|
|
110
|
+
ui.info(cli_shared_1.Text.removeContributors.confirmationInfo);
|
|
111
|
+
ui.emptyLine();
|
|
112
|
+
accountReferences.forEach((name) => {
|
|
113
|
+
ui.info(chalk_1.default.grey(name));
|
|
114
|
+
});
|
|
115
|
+
ui.emptyLine();
|
|
116
|
+
confirmRemoveContributors = await ui.confirm(cli_shared_1.Text.removeContributors.promptConfirmation);
|
|
117
|
+
if (confirmRemoveContributors)
|
|
118
|
+
ui.emptyLine();
|
|
119
|
+
}
|
|
120
|
+
if (confirmRemoveContributors) {
|
|
121
|
+
await ui.displayProgress(() => removeContributorsCommand.execute({ emails: email, accountIds }), cli_shared_1.Text.removeContributors.cmd.start, cli_shared_1.Text.removeContributors.cmd.success);
|
|
122
|
+
ui.emptyLine();
|
|
123
|
+
ui.info(cli_shared_1.Text.removeContributors.commandSuccessMessage(accountReferences));
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
};
|
|
68
127
|
const registerCommands = (deps) => {
|
|
69
128
|
const { cmd } = deps;
|
|
70
129
|
const contributors = cmd.command(COMMAND_NAME).description(cli_shared_1.Text.contributors.desc);
|
|
71
130
|
registerAddContributorCommand(contributors, deps);
|
|
72
131
|
registerListContributorsCommand(contributors, deps);
|
|
132
|
+
registerRemoveContributorsCommand(contributors, deps);
|
|
73
133
|
};
|
|
74
134
|
exports.registerCommands = registerCommands;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { GraphQLClient } from '@forge/cli-shared';
|
|
2
2
|
import { AppContributorDetails, AddContributorClient } from './add-contributor';
|
|
3
3
|
import { Contributor, ListContributorsClient } from './list-contributors';
|
|
4
|
+
import { RemoveContributorsDetails, RemoveContributorsClient } from './remove-contributors';
|
|
4
5
|
export declare class MissingAppContributors extends Error {
|
|
5
6
|
}
|
|
6
|
-
export declare class GraphqlClient implements AddContributorClient, ListContributorsClient {
|
|
7
|
+
export declare class GraphqlClient implements AddContributorClient, ListContributorsClient, RemoveContributorsClient {
|
|
7
8
|
private readonly graphqlClient;
|
|
8
9
|
constructor(graphqlClient: GraphQLClient);
|
|
9
10
|
addContributor(details: AppContributorDetails): Promise<void>;
|
|
10
11
|
listContributors(appId: string): Promise<Contributor[]>;
|
|
12
|
+
removeContributors(details: RemoveContributorsDetails): Promise<void>;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=graphql-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../../src/contributors/graphql-client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../../src/contributors/graphql-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,aAAa,EAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE5F,qBAAa,sBAAuB,SAAQ,KAAK;CAAG;AACpD,qBAAa,aAAc,YAAW,oBAAoB,EAAE,sBAAsB,EAAE,wBAAwB;IAC9F,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAE5C,cAAc,CAAC,OAAO,EAAE,qBAAqB;IAgD7C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA8BvD,kBAAkB,CAAC,OAAO,EAAE,yBAAyB;CA+CnE"}
|
|
@@ -39,7 +39,7 @@ class GraphqlClient {
|
|
|
39
39
|
const { success, errors } = addAppContributor;
|
|
40
40
|
const error = (0, cli_shared_1.getError)(errors);
|
|
41
41
|
if (!success) {
|
|
42
|
-
throw new cli_shared_1.GraphQlMutationError(`${error.message} (requestId: ${requestId || 'unknown'})`, error.code);
|
|
42
|
+
throw new cli_shared_1.GraphQlMutationError(`${error.message} (requestId: ${requestId || 'unknown'})`, error.code, error.statusCode);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
async listContributors(appId) {
|
|
@@ -68,5 +68,38 @@ class GraphqlClient {
|
|
|
68
68
|
accountStatus: contributor.status
|
|
69
69
|
}));
|
|
70
70
|
}
|
|
71
|
+
async removeContributors(details) {
|
|
72
|
+
const mutation = `
|
|
73
|
+
mutation forge_cli_removeContributors($input: RemoveAppContributorsInput!) {
|
|
74
|
+
ecosystem {
|
|
75
|
+
removeAppContributors(input: $input) {
|
|
76
|
+
success
|
|
77
|
+
errors {
|
|
78
|
+
message
|
|
79
|
+
extensions {
|
|
80
|
+
errorType
|
|
81
|
+
statusCode
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
88
|
+
const { response: { ecosystem: { removeAppContributors } }, requestId } = await this.graphqlClient.mutate(mutation, {
|
|
89
|
+
input: {
|
|
90
|
+
appId: details.appId,
|
|
91
|
+
emails: details.emails,
|
|
92
|
+
accountIds: details.accountIds
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
if (!removeAppContributors) {
|
|
96
|
+
throw new cli_shared_1.GraphQlMutationError(`Unable to get a response (requestId: ${requestId || 'unknown'})`);
|
|
97
|
+
}
|
|
98
|
+
const { success, errors } = removeAppContributors;
|
|
99
|
+
const error = (0, cli_shared_1.getError)(errors);
|
|
100
|
+
if (!success) {
|
|
101
|
+
throw new cli_shared_1.GraphQlMutationError(`${error.message} (requestId: ${requestId || 'unknown'})`, error.code, error.statusCode);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
71
104
|
}
|
|
72
105
|
exports.GraphqlClient = GraphqlClient;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AppConfigProvider } from '@forge/cli-shared';
|
|
2
|
+
export interface ContributorDetails {
|
|
3
|
+
emails?: string[];
|
|
4
|
+
accountIds?: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface RemoveContributorsDetails extends ContributorDetails {
|
|
7
|
+
appId: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RemoveContributorsClient {
|
|
10
|
+
removeContributors(details: RemoveContributorsDetails): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare class RemoveContributorsCommand {
|
|
13
|
+
private readonly client;
|
|
14
|
+
private readonly getAppConfig;
|
|
15
|
+
constructor(client: RemoveContributorsClient, getAppConfig: AppConfigProvider);
|
|
16
|
+
execute(details: ContributorDetails): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=remove-contributors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-contributors.d.ts","sourceRoot":"","sources":["../../src/contributors/remove-contributors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAA4B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAA/D,MAAM,EAAE,wBAAwB,EAAmB,YAAY,EAAE,iBAAiB;IAElG,OAAO,CAAC,OAAO,EAAE,kBAAkB;CAOjD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoveContributorsCommand = void 0;
|
|
4
|
+
class RemoveContributorsCommand {
|
|
5
|
+
constructor(client, getAppConfig) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
this.getAppConfig = getAppConfig;
|
|
8
|
+
}
|
|
9
|
+
async execute(details) {
|
|
10
|
+
const { id: appId } = await this.getAppConfig();
|
|
11
|
+
await this.client.removeContributors(Object.assign(Object.assign({}, details), { appId }));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.RemoveContributorsCommand = RemoveContributorsCommand;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/cli",
|
|
3
|
-
"version": "6.3.0
|
|
3
|
+
"version": "6.3.0",
|
|
4
4
|
"description": "A command line interface for managing Atlassian-hosted apps",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"postinstall": "node -e \"process.exitCode = fs.existsSync('./out/bin/postinstall.js')\" || node ./out/bin/postinstall.js"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@forge/bundler": "4.1.0
|
|
22
|
-
"@forge/cli-shared": "3.4.0
|
|
21
|
+
"@forge/bundler": "4.1.0",
|
|
22
|
+
"@forge/cli-shared": "3.4.0",
|
|
23
23
|
"@forge/egress": "^1.1.1",
|
|
24
|
-
"@forge/lint": "3.2.11
|
|
25
|
-
"@forge/manifest": "4.5.2
|
|
24
|
+
"@forge/lint": "3.2.11",
|
|
25
|
+
"@forge/manifest": "4.5.2",
|
|
26
26
|
"@forge/util": "1.2.0",
|
|
27
27
|
"ajv": "^6.12.5",
|
|
28
28
|
"archiver": "^5.2.0",
|