@credibledata/cred-cli 0.1.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.
Files changed (170) hide show
  1. package/.eslintrc +33 -0
  2. package/.github/workflows/build.yml +23 -0
  3. package/.mocharc.json +10 -0
  4. package/.prettierignore +1 -0
  5. package/.prettierrc +4 -0
  6. package/README.md +40 -0
  7. package/bun.lock +1259 -0
  8. package/dist/client/api.js +7022 -0
  9. package/dist/client/api.js.map +1 -0
  10. package/dist/client/base.js +69 -0
  11. package/dist/client/base.js.map +1 -0
  12. package/dist/client/common.js +162 -0
  13. package/dist/client/common.js.map +1 -0
  14. package/dist/client/configuration.js +44 -0
  15. package/dist/client/configuration.js.map +1 -0
  16. package/dist/client/index.js +32 -0
  17. package/dist/client/index.js.map +1 -0
  18. package/dist/clientconfiguration.js +163 -0
  19. package/dist/clientconfiguration.js.map +1 -0
  20. package/dist/clientconfiguration.spec.js +92 -0
  21. package/dist/clientconfiguration.spec.js.map +1 -0
  22. package/dist/commands/add.js +61 -0
  23. package/dist/commands/add.js.map +1 -0
  24. package/dist/commands/connection/createconnections.js +62 -0
  25. package/dist/commands/connection/createconnections.js.map +1 -0
  26. package/dist/commands/connection/deleteconnection.js +52 -0
  27. package/dist/commands/connection/deleteconnection.js.map +1 -0
  28. package/dist/commands/connection/listconnections.js +44 -0
  29. package/dist/commands/connection/listconnections.js.map +1 -0
  30. package/dist/commands/get.js +28 -0
  31. package/dist/commands/get.js.map +1 -0
  32. package/dist/commands/group/addmember.js +73 -0
  33. package/dist/commands/group/addmember.js.map +1 -0
  34. package/dist/commands/group/creategroup.js +55 -0
  35. package/dist/commands/group/creategroup.js.map +1 -0
  36. package/dist/commands/group/deletegroup.js +48 -0
  37. package/dist/commands/group/deletegroup.js.map +1 -0
  38. package/dist/commands/group/getgroup.js +50 -0
  39. package/dist/commands/group/getgroup.js.map +1 -0
  40. package/dist/commands/group/listgroups.js +56 -0
  41. package/dist/commands/group/listgroups.js.map +1 -0
  42. package/dist/commands/group/removemember.js +68 -0
  43. package/dist/commands/group/removemember.js.map +1 -0
  44. package/dist/commands/groupaccesstoken/createToken.js +49 -0
  45. package/dist/commands/groupaccesstoken/createToken.js.map +1 -0
  46. package/dist/commands/groupaccesstoken/deleteToken.js +24 -0
  47. package/dist/commands/groupaccesstoken/deleteToken.js.map +1 -0
  48. package/dist/commands/groupaccesstoken/groupContainer.js +71 -0
  49. package/dist/commands/groupaccesstoken/groupContainer.js.map +1 -0
  50. package/dist/commands/groupaccesstoken/listTokens.js +25 -0
  51. package/dist/commands/groupaccesstoken/listTokens.js.map +1 -0
  52. package/dist/commands/list.js +68 -0
  53. package/dist/commands/list.js.map +1 -0
  54. package/dist/commands/misc/login.js +166 -0
  55. package/dist/commands/misc/login.js.map +1 -0
  56. package/dist/commands/misc/login.spec.js +138 -0
  57. package/dist/commands/misc/login.spec.js.map +1 -0
  58. package/dist/commands/misc/logout.js +11 -0
  59. package/dist/commands/misc/logout.js.map +1 -0
  60. package/dist/commands/misc/set-access-token.js +27 -0
  61. package/dist/commands/misc/set-access-token.js.map +1 -0
  62. package/dist/commands/package/deletepackage.js +54 -0
  63. package/dist/commands/package/deletepackage.js.map +1 -0
  64. package/dist/commands/package/listpackages.js +52 -0
  65. package/dist/commands/package/listpackages.js.map +1 -0
  66. package/dist/commands/package/publish.js +134 -0
  67. package/dist/commands/package/publish.js.map +1 -0
  68. package/dist/commands/package/updatepackage.js +75 -0
  69. package/dist/commands/package/updatepackage.js.map +1 -0
  70. package/dist/commands/package/updatepackage.spec.js +139 -0
  71. package/dist/commands/package/updatepackage.spec.js.map +1 -0
  72. package/dist/commands/project/createproject.js +65 -0
  73. package/dist/commands/project/createproject.js.map +1 -0
  74. package/dist/commands/project/deleteproject.js +49 -0
  75. package/dist/commands/project/deleteproject.js.map +1 -0
  76. package/dist/commands/project/getproject.js +44 -0
  77. package/dist/commands/project/getproject.js.map +1 -0
  78. package/dist/commands/project/listprojects.js +46 -0
  79. package/dist/commands/project/listprojects.js.map +1 -0
  80. package/dist/commands/project/setproject.js +26 -0
  81. package/dist/commands/project/setproject.js.map +1 -0
  82. package/dist/commands/rm.js +68 -0
  83. package/dist/commands/rm.js.map +1 -0
  84. package/dist/commands/set.js +17 -0
  85. package/dist/commands/set.js.map +1 -0
  86. package/dist/commands/update.js +29 -0
  87. package/dist/commands/update.js.map +1 -0
  88. package/dist/commands/version/archive-unarchive-version.js +79 -0
  89. package/dist/commands/version/archive-unarchive-version.js.map +1 -0
  90. package/dist/commands/version/archive-unarchive-version.spec.js +244 -0
  91. package/dist/commands/version/archive-unarchive-version.spec.js.map +1 -0
  92. package/dist/commands/version/listversions.js +46 -0
  93. package/dist/commands/version/listversions.js.map +1 -0
  94. package/dist/common/UserGroupId.js +112 -0
  95. package/dist/common/UserGroupId.js.map +1 -0
  96. package/dist/constants.js +54 -0
  97. package/dist/constants.js.map +1 -0
  98. package/dist/index.js +137 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/logger.js +77 -0
  101. package/dist/logger.js.map +1 -0
  102. package/dist/polyfills/file.polyfill.js +6 -0
  103. package/dist/polyfills/file.polyfill.js.map +1 -0
  104. package/dist/utils.js +51 -0
  105. package/dist/utils.js.map +1 -0
  106. package/dist/validator.js +53 -0
  107. package/dist/validator.js.map +1 -0
  108. package/dist/validator.spec.js +41 -0
  109. package/dist/validator.spec.js.map +1 -0
  110. package/docker/Dockerfile.ci +10 -0
  111. package/docker-compose.yml +18 -0
  112. package/mocha.setup.ts +4 -0
  113. package/openapitools.json +7 -0
  114. package/package.json +67 -0
  115. package/src/client/.openapi-generator/FILES +8 -0
  116. package/src/client/.openapi-generator/VERSION +1 -0
  117. package/src/client/.openapi-generator-ignore +23 -0
  118. package/src/client/api.ts +8408 -0
  119. package/src/client/base.ts +86 -0
  120. package/src/client/common.ts +150 -0
  121. package/src/client/configuration.ts +110 -0
  122. package/src/client/git_push.sh +57 -0
  123. package/src/client/index.ts +18 -0
  124. package/src/clientconfiguration.spec.ts +116 -0
  125. package/src/clientconfiguration.ts +204 -0
  126. package/src/commands/add.ts +106 -0
  127. package/src/commands/connection/createconnections.ts +67 -0
  128. package/src/commands/connection/deleteconnection.ts +57 -0
  129. package/src/commands/connection/listconnections.ts +39 -0
  130. package/src/commands/get.ts +31 -0
  131. package/src/commands/group/addmember.ts +83 -0
  132. package/src/commands/group/creategroup.ts +54 -0
  133. package/src/commands/group/deletegroup.ts +45 -0
  134. package/src/commands/group/getgroup.ts +47 -0
  135. package/src/commands/group/listgroups.ts +45 -0
  136. package/src/commands/group/removemember.ts +74 -0
  137. package/src/commands/groupaccesstoken/createToken.ts +68 -0
  138. package/src/commands/groupaccesstoken/deleteToken.ts +24 -0
  139. package/src/commands/groupaccesstoken/groupContainer.ts +83 -0
  140. package/src/commands/groupaccesstoken/listTokens.ts +24 -0
  141. package/src/commands/list.ts +90 -0
  142. package/src/commands/misc/login.spec.ts +128 -0
  143. package/src/commands/misc/login.ts +142 -0
  144. package/src/commands/misc/logout.ts +9 -0
  145. package/src/commands/misc/set-access-token.ts +32 -0
  146. package/src/commands/package/deletepackage.ts +58 -0
  147. package/src/commands/package/listpackages.ts +44 -0
  148. package/src/commands/package/publish.ts +179 -0
  149. package/src/commands/package/updatepackage.spec.ts +221 -0
  150. package/src/commands/package/updatepackage.ts +95 -0
  151. package/src/commands/project/createproject.ts +59 -0
  152. package/src/commands/project/deleteproject.ts +48 -0
  153. package/src/commands/project/getproject.ts +43 -0
  154. package/src/commands/project/listprojects.ts +36 -0
  155. package/src/commands/project/setproject.ts +14 -0
  156. package/src/commands/rm.ts +106 -0
  157. package/src/commands/set.ts +16 -0
  158. package/src/commands/update.ts +41 -0
  159. package/src/commands/version/archive-unarchive-version.spec.ts +456 -0
  160. package/src/commands/version/archive-unarchive-version.ts +111 -0
  161. package/src/commands/version/listversions.ts +45 -0
  162. package/src/common/UserGroupId.ts +137 -0
  163. package/src/constants.ts +70 -0
  164. package/src/index.ts +183 -0
  165. package/src/logger.ts +86 -0
  166. package/src/polyfills/file.polyfill.ts +5 -0
  167. package/src/utils.ts +34 -0
  168. package/src/validator.spec.ts +51 -0
  169. package/src/validator.ts +44 -0
  170. package/tsconfig.json +20 -0
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createGroupAccessToken = createGroupAccessToken;
16
+ const kleur_1 = __importDefault(require("kleur"));
17
+ const logger_1 = require("../../logger");
18
+ const groupContainer_1 = require("./groupContainer");
19
+ function createGroupAccessToken(controlPlane, groupName, tokenName, expiresAt, debug) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ // Validate expiresAt format if provided
22
+ if (expiresAt) {
23
+ const expiresAtDate = new Date(expiresAt);
24
+ if (isNaN(expiresAtDate.getTime())) {
25
+ logger_1.logger.error(`Invalid expiration date format: ${expiresAt}. Please use ISO 8601 format (e.g., 2025-12-31T23:59:59Z)`);
26
+ process.exit(1);
27
+ }
28
+ if (expiresAtDate <= new Date()) {
29
+ logger_1.logger.error("Expiration date must be in the future");
30
+ process.exit(1);
31
+ }
32
+ }
33
+ const result = yield (0, groupContainer_1.withGroupContext)(controlPlane, (context) => __awaiter(this, void 0, void 0, function* () {
34
+ const { organizationName, groupsApi, options } = context;
35
+ logger_1.logger.info(`Creating access token ${tokenName} for group ${groupName} in organization ${organizationName}${expiresAt ? ` (expires: ${expiresAt})` : ""}`);
36
+ const response = yield groupsApi.createGroupAccessToken(organizationName, groupName, tokenName, expiresAt, options);
37
+ return response.data;
38
+ }), undefined, debug);
39
+ // Display security warning after the response is printed
40
+ console.log("\n" + kleur_1.default.yellow().bold("⚠️ IMPORTANT SECURITY NOTICE ⚠️"));
41
+ console.log(kleur_1.default.yellow("The token secret shown above will NOT be displayed again."));
42
+ console.log(kleur_1.default.yellow("Please store it securely in a password manager or secure vault."));
43
+ console.log(kleur_1.default.yellow("If you lose this token, you will need to create a new one."));
44
+ console.log("");
45
+ logger_1.logger.info("Group access token created successfully");
46
+ return result;
47
+ });
48
+ }
49
+ //# sourceMappingURL=createToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createToken.js","sourceRoot":"","sources":["../../../src/commands/groupaccesstoken/createToken.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,wDA+DC;AAnED,kDAA0B;AAC1B,yCAAsC;AACtC,qDAAoD;AAEpD,SAAsB,sBAAsB,CACxC,YAAoB,EACpB,SAAiB,EACjB,SAAiB,EACjB,SAA6B,EAC7B,KAAc;;QAEd,wCAAwC;QACxC,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACjC,eAAM,CAAC,KAAK,CACR,mCAAmC,SAAS,2DAA2D,CAC1G,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,aAAa,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC9B,eAAM,CAAC,KAAK,CACR,uCAAuC,CAC1C,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAgB,EAAC,YAAY,EAAE,CAAO,OAAO,EAAE,EAAE;YAClE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAEzD,eAAM,CAAC,IAAI,CACP,yBAAyB,SAAS,cAAc,SAAS,oBAAoB,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChJ,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,sBAAsB,CACnD,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,CACV,CAAC;YAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC,CAAA,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAErB,yDAAyD;QACzD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,MAAM,CACR,2DAA2D,CAC9D,CACJ,CAAC;QACF,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,MAAM,CACR,iEAAiE,CACpE,CACJ,CAAC;QACF,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,MAAM,CACR,4DAA4D,CAC/D,CACJ,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,eAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAEvD,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.deleteGroupAccessToken = deleteGroupAccessToken;
13
+ const logger_1 = require("../../logger");
14
+ const groupContainer_1 = require("./groupContainer");
15
+ function deleteGroupAccessToken(controlPlane, groupName, tokenName, debug) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ return (0, groupContainer_1.withGroupContext)(controlPlane, (context) => __awaiter(this, void 0, void 0, function* () {
18
+ const { organizationName, groupsApi, options } = context;
19
+ logger_1.logger.info(`Deleting access token ${tokenName} from group ${groupName} in organization ${organizationName}`);
20
+ yield groupsApi.deleteGroupAccessToken(organizationName, groupName, tokenName, options);
21
+ }), `Successfully deleted access token ${tokenName}. This token has been immediately revoked.`, debug);
22
+ });
23
+ }
24
+ //# sourceMappingURL=deleteToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteToken.js","sourceRoot":"","sources":["../../../src/commands/groupaccesstoken/deleteToken.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,wDAoBC;AAvBD,yCAAsC;AACtC,qDAAoD;AAEpD,SAAsB,sBAAsB,CACxC,YAAoB,EACpB,SAAiB,EACjB,SAAiB,EACjB,KAAc;;QAEd,OAAO,IAAA,iCAAgB,EAAC,YAAY,EAAE,CAAO,OAAO,EAAE,EAAE;YACpD,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAEzD,eAAM,CAAC,IAAI,CACP,yBAAyB,SAAS,eAAe,SAAS,oBAAoB,gBAAgB,EAAE,CACnG,CAAC;YAEF,MAAM,SAAS,CAAC,sBAAsB,CAClC,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,OAAO,CACV,CAAC;QACN,CAAC,CAAA,EAAE,qCAAqC,SAAS,4CAA4C,EAAE,KAAK,CAAC,CAAC;IAC1G,CAAC;CAAA"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.withGroupContext = withGroupContext;
13
+ const api_1 = require("../../client/api");
14
+ const configuration_1 = require("../../client/configuration");
15
+ const clientconfiguration_1 = require("../../clientconfiguration");
16
+ const logger_1 = require("../../logger");
17
+ const utils_1 = require("../../utils");
18
+ /**
19
+ * Container function that handles common ClientConfiguration checks, setup,
20
+ * error handling, and response printing for group access token operations.
21
+ *
22
+ * @param controlPlane The control plane URL
23
+ * @param handler The handler function to execute with the configured context
24
+ * @param successMessage Optional success message to display after the operation
25
+ * @param debug Whether to enable debug mode for error output
26
+ * @returns The result of the handler function, or void if validation fails
27
+ */
28
+ function withGroupContext(controlPlane_1, handler_1, successMessage_1) {
29
+ return __awaiter(this, arguments, void 0, function* (controlPlane, handler, successMessage, debug = false) {
30
+ const clientConfig = new clientconfiguration_1.ClientConfiguration();
31
+ if (!clientConfig.doesConfigExists()) {
32
+ logger_1.logger.error("Please, make sure that you are logged in");
33
+ return;
34
+ }
35
+ const organizationName = clientConfig.getOrganization();
36
+ if (!organizationName) {
37
+ logger_1.logger.error("No organization set. Please login or set an organization.");
38
+ return;
39
+ }
40
+ const options = {
41
+ baseURL: controlPlane,
42
+ headers: {
43
+ Authorization: clientConfig.getAuthenticationHeader(),
44
+ },
45
+ };
46
+ const context = {
47
+ organizationName,
48
+ groupsApi: new api_1.GroupsApi(new configuration_1.Configuration()),
49
+ options,
50
+ };
51
+ try {
52
+ const result = yield handler(context);
53
+ // Print response if it exists
54
+ if (result !== undefined && result !== null) {
55
+ const jsonString = JSON.stringify(result, null, 2);
56
+ console.log(jsonString);
57
+ }
58
+ // Print success message if provided
59
+ if (successMessage) {
60
+ logger_1.logger.info(successMessage);
61
+ }
62
+ return result;
63
+ }
64
+ catch (error) {
65
+ logger_1.logger.error("Operation failed");
66
+ (0, utils_1.printOutError)(error, debug);
67
+ process.exit(1);
68
+ }
69
+ });
70
+ }
71
+ //# sourceMappingURL=groupContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupContainer.js","sourceRoot":"","sources":["../../../src/commands/groupaccesstoken/groupContainer.ts"],"names":[],"mappings":";;;;;;;;;;;AA8BA,4CAoDC;AAlFD,0CAA6C;AAC7C,8DAA2D;AAC3D,mEAAgE;AAChE,yCAAsC;AACtC,uCAA4C;AAgB5C;;;;;;;;;GASG;AACH,SAAsB,gBAAgB;yDAClC,YAAoB,EACpB,OAA8C,EAC9C,cAAuB,EACvB,QAAiB,KAAK;QAEtB,MAAM,YAAY,GAAG,IAAI,yCAAmB,EAAE,CAAC;QAE/C,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACnC,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,OAAO;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;QACxD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,eAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC1E,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAe;YACxB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE;gBACL,aAAa,EAAE,YAAY,CAAC,uBAAuB,EAAE;aACxD;SACJ,CAAC;QAEF,MAAM,OAAO,GAAiB;YAC1B,gBAAgB;YAChB,SAAS,EAAE,IAAI,eAAS,CAAC,IAAI,6BAAa,EAAE,CAAC;YAC7C,OAAO;SACV,CAAC;QAEF,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YAEtC,8BAA8B;YAC9B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YAED,oCAAoC;YACpC,IAAI,cAAc,EAAE,CAAC;gBACjB,eAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACjC,IAAA,qBAAa,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CAAA"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.listGroupAccessTokens = listGroupAccessTokens;
13
+ const logger_1 = require("../../logger");
14
+ const groupContainer_1 = require("./groupContainer");
15
+ function listGroupAccessTokens(controlPlane, groupName, debug) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ return (0, groupContainer_1.withGroupContext)(controlPlane, (context) => __awaiter(this, void 0, void 0, function* () {
18
+ const { organizationName, groupsApi, options } = context;
19
+ logger_1.logger.info(`Listing access tokens for group ${groupName} in organization ${organizationName}`);
20
+ const response = yield groupsApi.listGroupAccessTokens(organizationName, groupName, options);
21
+ return response.data;
22
+ }), "Group access tokens listed successfully", debug);
23
+ });
24
+ }
25
+ //# sourceMappingURL=listTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listTokens.js","sourceRoot":"","sources":["../../../src/commands/groupaccesstoken/listTokens.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,sDAoBC;AAvBD,yCAAsC;AACtC,qDAAoD;AAEpD,SAAsB,qBAAqB,CACvC,YAAoB,EACpB,SAAiB,EACjB,KAAc;;QAEd,OAAO,IAAA,iCAAgB,EAAC,YAAY,EAAE,CAAO,OAAO,EAAE,EAAE;YACpD,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAEzD,eAAM,CAAC,IAAI,CACP,mCAAmC,SAAS,oBAAoB,gBAAgB,EAAE,CACrF,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAClD,gBAAgB,EAChB,SAAS,EACT,OAAO,CACV,CAAC;YAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC,CAAA,EAAE,yCAAyC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;CAAA"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerListCommands = void 0;
4
+ const constants_1 = require("../constants");
5
+ const listconnections_1 = require("./connection/listconnections");
6
+ const listgroups_1 = require("./group/listgroups");
7
+ const listTokens_1 = require("./groupaccesstoken/listTokens");
8
+ const listpackages_1 = require("./package/listpackages");
9
+ const listprojects_1 = require("./project/listprojects");
10
+ const listversions_1 = require("./version/listversions");
11
+ const registerListCommands = (cli, environment) => {
12
+ const list = cli
13
+ .command("ls")
14
+ .description("List resources of a given type")
15
+ .argument("<resource>", "The resource to list");
16
+ list
17
+ .command("project")
18
+ .alias("projects")
19
+ .description("List all projects.")
20
+ .option("--debug")
21
+ .action((options) => {
22
+ (0, listprojects_1.printOutProjects)(constants_1.controlPlanesByEnv[environment], options.debug);
23
+ });
24
+ list
25
+ .command("connection")
26
+ .alias("connections")
27
+ .description("List all connections.")
28
+ .option("--debug")
29
+ .action((options) => {
30
+ (0, listconnections_1.listConnections)(constants_1.controlPlanesByEnv[environment], options.debug);
31
+ });
32
+ list
33
+ .command("package")
34
+ .alias("packages")
35
+ .description("List the packages in the active project.")
36
+ .option("--debug")
37
+ .action((options) => {
38
+ (0, listpackages_1.printOutPackages)(constants_1.controlPlanesByEnv[environment], options.debug);
39
+ });
40
+ list
41
+ .command("version")
42
+ .alias("versions")
43
+ .description("List the versions of a package.")
44
+ .argument("<packageName>", "The name of the package to list the versions of.")
45
+ .option("--debug")
46
+ .action((packageName, options) => {
47
+ (0, listversions_1.listVersions)(constants_1.controlPlanesByEnv[environment], packageName, options.debug);
48
+ });
49
+ list
50
+ .command("group")
51
+ .alias("groups")
52
+ .description("List all groups in the organization.")
53
+ .option("--debug")
54
+ .action((options) => {
55
+ (0, listgroups_1.printOutGroups)(constants_1.controlPlanesByEnv[environment], options.debug);
56
+ });
57
+ list
58
+ .command("group-access-token")
59
+ .alias("group-access-tokens")
60
+ .description("List all access tokens for a group.")
61
+ .argument("<groupName>", "The name of the group")
62
+ .option("--debug")
63
+ .action((groupName, options) => {
64
+ (0, listTokens_1.listGroupAccessTokens)(constants_1.controlPlanesByEnv[environment], groupName, options.debug);
65
+ });
66
+ };
67
+ exports.registerListCommands = registerListCommands;
68
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;;AACA,4CAA+D;AAC/D,kEAA+D;AAC/D,mDAAoD;AACpD,8DAAsE;AACtE,yDAA0D;AAC1D,yDAA0D;AAC1D,yDAAsD;AAE/C,MAAM,oBAAoB,GAAG,CACjC,GAAY,EACZ,WAAwB,EACzB,EAAE;IACD,MAAM,IAAI,GAAG,GAAG;SACZ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,gCAAgC,CAAC;SAC7C,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAEnD,IAAI;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,UAAU,CAAC;SACjB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACjB,IAAA,+BAAgB,EAAC,8BAAkB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEN,IAAI;SACA,OAAO,CAAC,YAAY,CAAC;SACrB,KAAK,CAAC,aAAa,CAAC;SACpB,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACjB,IAAA,iCAAe,EAAC,8BAAkB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEN,IAAI;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,UAAU,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACjB,IAAA,+BAAgB,EAAC,8BAAkB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEN,IAAI;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,UAAU,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CACN,eAAe,EACf,kDAAkD,CACpD;SACA,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE;QAC9B,IAAA,2BAAY,EACT,8BAAkB,CAAC,WAAW,CAAC,EAC/B,WAAW,EACX,OAAO,CAAC,KAAK,CACf,CAAC;IACL,CAAC,CAAC,CAAC;IAEN,IAAI;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,KAAK,CAAC,QAAQ,CAAC;SACf,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACjB,IAAA,2BAAc,EAAC,8BAAkB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAGN,IAAI;SACA,OAAO,CAAC,oBAAoB,CAAC;SAC7B,KAAK,CAAC,qBAAqB,CAAC;SAC5B,WAAW,CAAC,qCAAqC,CAAC;SAClD,QAAQ,CACN,aAAa,EACb,uBAAuB,CACzB;SACA,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;QAC5B,IAAA,kCAAqB,EAClB,8BAAkB,CAAC,WAAW,CAAC,EAC/B,SAAS,EACT,OAAO,CAAC,KAAK,CACf,CAAC;IACL,CAAC,CAAC,CAAC;AAET,CAAC,CAAC;AAhFW,QAAA,oBAAoB,wBAgF/B"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.login = login;
46
+ const axios_1 = __importStar(require("axios"));
47
+ const jwt_decode_1 = require("jwt-decode");
48
+ const clientconfiguration_1 = require("../../clientconfiguration");
49
+ const constants_1 = require("../../constants");
50
+ const logger_1 = require("../../logger");
51
+ const utils_1 = require("../../utils");
52
+ function login(organizationName, configPath) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ const config = new clientconfiguration_1.ClientConfiguration(configPath);
55
+ const environment = config.getEnvironment();
56
+ if (environment === "e2e-test") {
57
+ return loginM2M(organizationName, config);
58
+ }
59
+ else {
60
+ return loginWithDeviceCode(environment, organizationName, config);
61
+ }
62
+ });
63
+ }
64
+ function loginWithDeviceCode(environment, organizationName, config) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ var _a, _b, _c;
67
+ const auth0Domain = constants_1.auth0ConfigsByEnv[environment].domain;
68
+ const auth0ClientId = constants_1.auth0ConfigsByEnv[environment].clientId;
69
+ let deviceCodeData = null;
70
+ try {
71
+ const deviceCode = yield axios_1.default.request({
72
+ method: "POST",
73
+ url: `${auth0Domain}/oauth/device/code`,
74
+ headers: { "content-type": "application/x-www-form-urlencoded" },
75
+ data: {
76
+ client_id: auth0ClientId,
77
+ audience: constants_1.auth0ConfigsByEnv[environment].audience,
78
+ scope: "openid profile email offline_access",
79
+ },
80
+ });
81
+ deviceCodeData = deviceCode.data;
82
+ logger_1.logger.info(`Please visit the following URL to login ${deviceCode.data.verification_uri_complete} and verify user code ${deviceCode.data.user_code}.`);
83
+ logger_1.logger.info("Waiting for login...");
84
+ }
85
+ catch (e) {
86
+ (0, utils_1.printOutError)(e, false);
87
+ process.exit(1);
88
+ }
89
+ const startTime = Date.now();
90
+ while (true) {
91
+ try {
92
+ const accessToken = yield axios_1.default.request({
93
+ method: "POST",
94
+ url: `${auth0Domain}/oauth/token`,
95
+ headers: { "content-type": "application/x-www-form-urlencoded" },
96
+ data: new URLSearchParams({
97
+ grant_type: "urn:ietf:params:oauth:grant-type:device_code",
98
+ device_code: deviceCodeData.device_code,
99
+ client_id: auth0ClientId,
100
+ }),
101
+ });
102
+ const decoded = (0, jwt_decode_1.jwtDecode)(accessToken.data.id_token);
103
+ if (typeof decoded === "object" &&
104
+ decoded !== null &&
105
+ "email" in decoded &&
106
+ "name" in decoded) {
107
+ const user = decoded;
108
+ config.setVSCodeUser(user.name, user.email);
109
+ }
110
+ config.setAccessToken(true, accessToken.data.access_token);
111
+ config.setJwtAccessToken(accessToken.data.access_token);
112
+ config.setRefreshToken(accessToken.data.refresh_token);
113
+ if (organizationName !== config.getOrganization()) {
114
+ config.setOrganization(organizationName);
115
+ config.setProject(undefined);
116
+ }
117
+ logger_1.logger.info("Login successful");
118
+ break;
119
+ }
120
+ catch (error) {
121
+ if ((0, axios_1.isAxiosError)(error) &&
122
+ ((_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.error) !== "authorization_pending") {
123
+ logger_1.logger.error((0, utils_1.prettifyJson)((_c = error.response) === null || _c === void 0 ? void 0 : _c.data));
124
+ }
125
+ if (Date.now() - startTime > constants_1.LOGIN_TIMEOUT_MS) {
126
+ logger_1.logger.info("Login timed out after 5 minutes");
127
+ process.exit(1);
128
+ }
129
+ yield (0, utils_1.sleep)(deviceCodeData.interval * 1000);
130
+ }
131
+ }
132
+ });
133
+ }
134
+ function loginM2M(organizationName, config) {
135
+ return __awaiter(this, void 0, void 0, function* () {
136
+ const auth0Config = constants_1.auth0ConfigsByEnv["e2e-test"];
137
+ if (!auth0Config) {
138
+ throw new Error("No environment variables present for e2e");
139
+ }
140
+ try {
141
+ const response = yield axios_1.default.request({
142
+ method: "POST",
143
+ url: `${auth0Config.domain}/oauth/token`,
144
+ headers: { "content-type": "application/x-www-form-urlencoded" },
145
+ data: {
146
+ grant_type: "client_credentials",
147
+ client_id: auth0Config.clientId,
148
+ client_secret: auth0Config.clientSecret,
149
+ audience: auth0Config.audience,
150
+ },
151
+ });
152
+ const token = response.data.access_token;
153
+ if (!token) {
154
+ throw new Error("No access token received");
155
+ }
156
+ config.destroyConfig();
157
+ config.setAccessToken(true, token);
158
+ config.setOrganization(organizationName);
159
+ }
160
+ catch (e) {
161
+ (0, utils_1.printOutError)(e, false);
162
+ process.exit(1);
163
+ }
164
+ });
165
+ }
166
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/misc/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const axios_1 = __importDefault(require("axios"));
16
+ const chai_1 = require("chai");
17
+ const fs_1 = __importDefault(require("fs"));
18
+ const os_1 = __importDefault(require("os"));
19
+ const path_1 = require("path");
20
+ const sinon_1 = __importDefault(require("sinon"));
21
+ const clientconfiguration_1 = require("../../clientconfiguration");
22
+ const login_1 = require("./login");
23
+ function createFakeIdToken(payload) {
24
+ const header = Buffer.from(JSON.stringify({ alg: "none", typ: "JWT" })).toString("base64url");
25
+ const body = Buffer.from(JSON.stringify(payload)).toString("base64url");
26
+ return `${header}.${body}.`;
27
+ }
28
+ describe("login", () => {
29
+ let tmpConfigFilePath;
30
+ let axiosStub;
31
+ const mockDeviceCodeResponse = {
32
+ data: {
33
+ verification_uri_complete: "https://example.com",
34
+ user_code: "123456",
35
+ device_code: "device-code-123",
36
+ interval: 1,
37
+ },
38
+ };
39
+ const fakeJwtPayload = {
40
+ name: "Test User",
41
+ email: "test@example.com",
42
+ };
43
+ const mockedAccessTokenResponse = {
44
+ data: {
45
+ id_token: createFakeIdToken(fakeJwtPayload),
46
+ access_token: "mock-access-token",
47
+ refresh_token: "mock-refresh-token",
48
+ },
49
+ };
50
+ beforeEach(() => {
51
+ tmpConfigFilePath = (0, path_1.join)(os_1.default.tmpdir(), "cred.json");
52
+ fs_1.default.writeFileSync(tmpConfigFilePath, "{}");
53
+ axiosStub = sinon_1.default.stub(axios_1.default, "request");
54
+ });
55
+ afterEach(() => {
56
+ fs_1.default.rmSync(tmpConfigFilePath);
57
+ axiosStub.restore();
58
+ });
59
+ it("should not delete config properties on login", function () {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ this.timeout(2000);
62
+ const config = new clientconfiguration_1.ClientConfiguration(tmpConfigFilePath);
63
+ config.setEnvironment("localhost");
64
+ config.setOrganization("foo");
65
+ config.setProject("bar");
66
+ axiosStub
67
+ .onFirstCall()
68
+ .resolves(mockDeviceCodeResponse)
69
+ .onSecondCall()
70
+ .resolves(mockedAccessTokenResponse);
71
+ yield (0, login_1.login)("foo", tmpConfigFilePath);
72
+ (0, chai_1.expect)(config.getOrganization()).to.equal("foo");
73
+ (0, chai_1.expect)(config.getProject()).to.equal("bar");
74
+ });
75
+ });
76
+ it("should change the active organization when login succeeds", function () {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ this.timeout(2000);
79
+ axiosStub
80
+ .onFirstCall()
81
+ .resolves(mockDeviceCodeResponse)
82
+ .onSecondCall()
83
+ .resolves(mockedAccessTokenResponse);
84
+ const config = new clientconfiguration_1.ClientConfiguration(tmpConfigFilePath);
85
+ config.setEnvironment("localhost");
86
+ config.setOrganization("foo");
87
+ config.setProject("bar");
88
+ yield (0, login_1.login)("test", tmpConfigFilePath);
89
+ (0, chai_1.expect)(config.getOrganization()).to.equal("test");
90
+ });
91
+ });
92
+ it("should set an access token when login succeeds", function () {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ this.timeout(2000);
95
+ axiosStub
96
+ .onFirstCall()
97
+ .resolves(mockDeviceCodeResponse)
98
+ .onSecondCall()
99
+ .resolves(mockedAccessTokenResponse);
100
+ const config = new clientconfiguration_1.ClientConfiguration(tmpConfigFilePath);
101
+ yield (0, login_1.login)("test", tmpConfigFilePath);
102
+ (0, chai_1.expect)(config.getAccessToken()).to.equal(mockedAccessTokenResponse.data.access_token);
103
+ });
104
+ });
105
+ it("should unset the project field when switching organizations", function () {
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ this.timeout(2000);
108
+ axiosStub
109
+ .onFirstCall()
110
+ .resolves(mockDeviceCodeResponse)
111
+ .onSecondCall()
112
+ .resolves(mockedAccessTokenResponse);
113
+ const config = new clientconfiguration_1.ClientConfiguration(tmpConfigFilePath);
114
+ config.setEnvironment("localhost");
115
+ config.setOrganization("foo");
116
+ config.setProject("bar");
117
+ yield (0, login_1.login)("not-foo", tmpConfigFilePath);
118
+ (0, chai_1.expect)(config.getProject()).to.equal(undefined);
119
+ });
120
+ });
121
+ it("should not unset the project field when logging in with the same organization", function () {
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ this.timeout(2000);
124
+ axiosStub
125
+ .onFirstCall()
126
+ .resolves(mockDeviceCodeResponse)
127
+ .onSecondCall()
128
+ .resolves(mockedAccessTokenResponse);
129
+ const config = new clientconfiguration_1.ClientConfiguration(tmpConfigFilePath);
130
+ config.setEnvironment("localhost");
131
+ config.setOrganization("foo");
132
+ config.setProject("bar");
133
+ yield (0, login_1.login)("foo", tmpConfigFilePath);
134
+ (0, chai_1.expect)(config.getProject()).to.equal("bar");
135
+ });
136
+ });
137
+ });
138
+ //# sourceMappingURL=login.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.spec.js","sourceRoot":"","sources":["../../../src/commands/misc/login.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logout = logout;
4
+ const clientconfiguration_1 = require("../../clientconfiguration");
5
+ const logger_1 = require("../../logger");
6
+ function logout() {
7
+ const config = new clientconfiguration_1.ClientConfiguration();
8
+ config.destroyConfig();
9
+ logger_1.logger.info("Credentials reset");
10
+ }
11
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/commands/misc/logout.ts"],"names":[],"mappings":";;AAGA,wBAKC;AARD,mEAAgE;AAChE,yCAAsC;AAEtC,SAAgB,MAAM;IACnB,MAAM,MAAM,GAAG,IAAI,yCAAmB,EAAE,CAAC;IACzC,MAAM,CAAC,aAAa,EAAE,CAAC;IAEvB,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setAccessToken = setAccessToken;
4
+ const clientconfiguration_1 = require("../../clientconfiguration");
5
+ const logger_1 = require("../../logger");
6
+ /**
7
+ * Sets a service account JWT token for CLI authentication.
8
+ *
9
+ * @param jwtToken The JWT token to use for authentication
10
+ * @param organizationName Optional organization name to set
11
+ * @param configPath Optional custom config path
12
+ */
13
+ function setAccessToken(jwtToken, organizationName, configPath) {
14
+ const config = new clientconfiguration_1.ClientConfiguration(configPath);
15
+ // Set the JWT token as both access token and JWT access token
16
+ config.setAccessToken(false, jwtToken);
17
+ config.setJwtAccessToken(jwtToken);
18
+ // Set organization if provided
19
+ if (organizationName) {
20
+ config.setOrganization(organizationName);
21
+ }
22
+ logger_1.logger.info("Access token set successfully");
23
+ if (organizationName) {
24
+ logger_1.logger.info(`Organization set to: ${organizationName}`);
25
+ }
26
+ }
27
+ //# sourceMappingURL=set-access-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-access-token.js","sourceRoot":"","sources":["../../../src/commands/misc/set-access-token.ts"],"names":[],"mappings":";;AAUA,wCAqBC;AA/BD,mEAAgE;AAChE,yCAAsC;AAEtC;;;;;;GAMG;AACH,SAAgB,cAAc,CAC1B,QAAgB,EAChB,gBAAyB,EACzB,UAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,yCAAmB,CAAC,UAAU,CAAC,CAAC;IAEnD,8DAA8D;IAC9D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEnC,+BAA+B;IAC/B,IAAI,gBAAgB,EAAE,CAAC;QACnB,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAE7C,IAAI,gBAAgB,EAAE,CAAC;QACnB,eAAM,CAAC,IAAI,CAAC,wBAAwB,gBAAgB,EAAE,CAAC,CAAC;IAC5D,CAAC;AACL,CAAC"}