@prismatic-io/prism 3.2.3 → 4.1.1

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 (207) hide show
  1. package/bin/run +9 -8
  2. package/lib/auth.js +183 -201
  3. package/lib/commands/alerts/events/list.js +27 -57
  4. package/lib/commands/alerts/groups/create.js +18 -49
  5. package/lib/commands/alerts/groups/delete.js +10 -41
  6. package/lib/commands/alerts/groups/list.js +15 -47
  7. package/lib/commands/alerts/monitors/clear.js +10 -41
  8. package/lib/commands/alerts/monitors/create.js +27 -58
  9. package/lib/commands/alerts/monitors/delete.js +10 -41
  10. package/lib/commands/alerts/monitors/list.js +16 -48
  11. package/lib/commands/alerts/triggers/list.js +15 -47
  12. package/lib/commands/alerts/webhooks/create.js +18 -49
  13. package/lib/commands/alerts/webhooks/delete.js +10 -41
  14. package/lib/commands/alerts/webhooks/list.js +25 -57
  15. package/lib/commands/authorization-methods/list.js +20 -51
  16. package/lib/commands/components/actions/list.js +29 -61
  17. package/lib/commands/components/delete.js +10 -41
  18. package/lib/commands/components/dev/run.js +75 -0
  19. package/lib/commands/components/dev/test.js +218 -0
  20. package/lib/commands/components/init/action.js +12 -0
  21. package/lib/commands/components/init/component.js +12 -0
  22. package/lib/commands/components/init/connection.js +12 -0
  23. package/lib/commands/components/init/index.js +203 -0
  24. package/lib/commands/components/init/trigger.js +12 -0
  25. package/lib/commands/components/list.js +31 -60
  26. package/lib/commands/components/publish.js +29 -279
  27. package/lib/commands/components/triggers/list.js +29 -61
  28. package/lib/commands/customers/create.js +14 -45
  29. package/lib/commands/customers/credentials/create.js +19 -50
  30. package/lib/commands/customers/credentials/delete.js +10 -41
  31. package/lib/commands/customers/credentials/list.js +30 -59
  32. package/lib/commands/customers/credentials/update.js +16 -47
  33. package/lib/commands/customers/delete.js +10 -41
  34. package/lib/commands/customers/list.js +16 -48
  35. package/lib/commands/customers/update.js +15 -46
  36. package/lib/commands/customers/users/create.js +18 -49
  37. package/lib/commands/customers/users/delete.js +10 -41
  38. package/lib/commands/customers/users/list.js +21 -51
  39. package/lib/commands/customers/users/roles.js +18 -48
  40. package/lib/commands/customers/users/update.js +19 -50
  41. package/lib/commands/executions/step-result/get.js +36 -66
  42. package/lib/commands/instances/config-vars/list.js +32 -62
  43. package/lib/commands/instances/create.js +20 -51
  44. package/lib/commands/instances/delete.js +10 -41
  45. package/lib/commands/instances/deploy.js +20 -44
  46. package/lib/commands/instances/disable.js +11 -42
  47. package/lib/commands/instances/enable.js +11 -42
  48. package/lib/commands/instances/flow-configs/list.js +25 -55
  49. package/lib/commands/instances/flow-configs/test.js +62 -97
  50. package/lib/commands/instances/list.js +31 -59
  51. package/lib/commands/instances/update.js +15 -46
  52. package/lib/commands/integrations/available.js +13 -44
  53. package/lib/commands/integrations/create.js +14 -45
  54. package/lib/commands/integrations/delete.js +10 -41
  55. package/lib/commands/integrations/export.js +16 -59
  56. package/lib/commands/integrations/flows/list.js +22 -52
  57. package/lib/commands/integrations/flows/test.js +62 -96
  58. package/lib/commands/integrations/fork.js +15 -46
  59. package/lib/commands/integrations/import.js +12 -63
  60. package/lib/commands/integrations/list.js +25 -54
  61. package/lib/commands/integrations/publish.js +13 -44
  62. package/lib/commands/integrations/update.js +18 -49
  63. package/lib/commands/integrations/versions/index.js +26 -58
  64. package/lib/commands/login.js +16 -32
  65. package/lib/commands/logout.js +10 -22
  66. package/lib/commands/logs/severities/list.js +15 -47
  67. package/lib/commands/me/index.js +15 -60
  68. package/lib/commands/me/token/revoke.js +12 -0
  69. package/lib/commands/me/token.js +10 -22
  70. package/lib/commands/organization/credentials/create.js +17 -48
  71. package/lib/commands/organization/credentials/delete.js +10 -41
  72. package/lib/commands/organization/credentials/list.js +22 -54
  73. package/lib/commands/organization/credentials/update.js +16 -47
  74. package/lib/commands/organization/update.js +12 -43
  75. package/lib/commands/organization/updateAvatarUrl.js +14 -45
  76. package/lib/commands/organization/users/create.js +16 -47
  77. package/lib/commands/organization/users/delete.js +10 -41
  78. package/lib/commands/organization/users/list.js +16 -48
  79. package/lib/commands/organization/users/roles.js +18 -48
  80. package/lib/commands/organization/users/update.js +19 -50
  81. package/lib/config.js +24 -30
  82. package/lib/errors.js +48 -27
  83. package/lib/fields.js +6 -4
  84. package/lib/fs.js +6 -14
  85. package/lib/generate/action.js +36 -41
  86. package/lib/generate/client.js +11 -16
  87. package/lib/generate/connection.js +4 -13
  88. package/lib/generate/index.js +29 -19
  89. package/lib/generate/input.js +28 -43
  90. package/lib/generate/parse.js +38 -44
  91. package/lib/generate/sourceFile.js +11 -7
  92. package/lib/generate/util.js +9 -7
  93. package/lib/graphql.js +37 -65
  94. package/lib/index.js +3 -3
  95. package/lib/utils/component/publish.js +219 -0
  96. package/lib/utils/component/query.js +23 -0
  97. package/lib/utils/date.js +14 -0
  98. package/lib/utils/execution/logs.js +86 -0
  99. package/lib/utils/integration/definition.js +101 -0
  100. package/lib/utils/integration/export.js +36 -0
  101. package/lib/utils/integration/import.js +46 -0
  102. package/lib/utils/integration/invoke.js +64 -0
  103. package/lib/utils/integration/query.js +59 -0
  104. package/lib/utils/serialize.js +8 -0
  105. package/lib/utils/user/query.js +24 -0
  106. package/lib/yeoman.js +23 -0
  107. package/oclif.manifest.json +1 -1
  108. package/package.json +48 -54
  109. package/templates/component/openapi/client.ts +11 -9
  110. package/templates/component/openapi/request.ts +6 -4
  111. package/lib/auth.js.map +0 -1
  112. package/lib/commands/alerts/events/list.js.map +0 -1
  113. package/lib/commands/alerts/groups/create.js.map +0 -1
  114. package/lib/commands/alerts/groups/delete.js.map +0 -1
  115. package/lib/commands/alerts/groups/list.js.map +0 -1
  116. package/lib/commands/alerts/monitors/clear.js.map +0 -1
  117. package/lib/commands/alerts/monitors/create.js.map +0 -1
  118. package/lib/commands/alerts/monitors/delete.js.map +0 -1
  119. package/lib/commands/alerts/monitors/list.js.map +0 -1
  120. package/lib/commands/alerts/triggers/list.js.map +0 -1
  121. package/lib/commands/alerts/webhooks/create.js.map +0 -1
  122. package/lib/commands/alerts/webhooks/delete.js.map +0 -1
  123. package/lib/commands/alerts/webhooks/list.js.map +0 -1
  124. package/lib/commands/authorization-methods/list.js.map +0 -1
  125. package/lib/commands/components/actions/list.js.map +0 -1
  126. package/lib/commands/components/delete.js.map +0 -1
  127. package/lib/commands/components/init.js +0 -224
  128. package/lib/commands/components/init.js.map +0 -1
  129. package/lib/commands/components/list.js.map +0 -1
  130. package/lib/commands/components/publish.js.map +0 -1
  131. package/lib/commands/components/triggers/list.js.map +0 -1
  132. package/lib/commands/customers/create.js.map +0 -1
  133. package/lib/commands/customers/credentials/create.js.map +0 -1
  134. package/lib/commands/customers/credentials/delete.js.map +0 -1
  135. package/lib/commands/customers/credentials/list.js.map +0 -1
  136. package/lib/commands/customers/credentials/update.js.map +0 -1
  137. package/lib/commands/customers/delete.js.map +0 -1
  138. package/lib/commands/customers/list.js.map +0 -1
  139. package/lib/commands/customers/update.js.map +0 -1
  140. package/lib/commands/customers/users/create.js.map +0 -1
  141. package/lib/commands/customers/users/delete.js.map +0 -1
  142. package/lib/commands/customers/users/list.js.map +0 -1
  143. package/lib/commands/customers/users/roles.js.map +0 -1
  144. package/lib/commands/customers/users/update.js.map +0 -1
  145. package/lib/commands/executions/step-result/get.js.map +0 -1
  146. package/lib/commands/instances/config-vars/list.js.map +0 -1
  147. package/lib/commands/instances/create.js.map +0 -1
  148. package/lib/commands/instances/delete.js.map +0 -1
  149. package/lib/commands/instances/deploy.js.map +0 -1
  150. package/lib/commands/instances/disable.js.map +0 -1
  151. package/lib/commands/instances/enable.js.map +0 -1
  152. package/lib/commands/instances/flow-configs/list.js.map +0 -1
  153. package/lib/commands/instances/flow-configs/test.js.map +0 -1
  154. package/lib/commands/instances/list.js.map +0 -1
  155. package/lib/commands/instances/update.js.map +0 -1
  156. package/lib/commands/integrations/available.js.map +0 -1
  157. package/lib/commands/integrations/create.js.map +0 -1
  158. package/lib/commands/integrations/delete.js.map +0 -1
  159. package/lib/commands/integrations/export.js.map +0 -1
  160. package/lib/commands/integrations/flows/list.js.map +0 -1
  161. package/lib/commands/integrations/flows/test.js.map +0 -1
  162. package/lib/commands/integrations/fork.js.map +0 -1
  163. package/lib/commands/integrations/import.js.map +0 -1
  164. package/lib/commands/integrations/list.js.map +0 -1
  165. package/lib/commands/integrations/publish.js.map +0 -1
  166. package/lib/commands/integrations/update.js.map +0 -1
  167. package/lib/commands/integrations/versions/index.js.map +0 -1
  168. package/lib/commands/login.js.map +0 -1
  169. package/lib/commands/logout.js.map +0 -1
  170. package/lib/commands/logs/severities/list.js.map +0 -1
  171. package/lib/commands/me/index.js.map +0 -1
  172. package/lib/commands/me/token.js.map +0 -1
  173. package/lib/commands/organization/credentials/create.js.map +0 -1
  174. package/lib/commands/organization/credentials/delete.js.map +0 -1
  175. package/lib/commands/organization/credentials/list.js.map +0 -1
  176. package/lib/commands/organization/credentials/update.js.map +0 -1
  177. package/lib/commands/organization/update.js.map +0 -1
  178. package/lib/commands/organization/updateAvatarUrl.js.map +0 -1
  179. package/lib/commands/organization/users/create.js.map +0 -1
  180. package/lib/commands/organization/users/delete.js.map +0 -1
  181. package/lib/commands/organization/users/list.js.map +0 -1
  182. package/lib/commands/organization/users/roles.js.map +0 -1
  183. package/lib/commands/organization/users/update.js.map +0 -1
  184. package/lib/config.js.map +0 -1
  185. package/lib/errors.js.map +0 -1
  186. package/lib/fields.js.map +0 -1
  187. package/lib/fs.js.map +0 -1
  188. package/lib/generate/action.js.map +0 -1
  189. package/lib/generate/client.js.map +0 -1
  190. package/lib/generate/connection.js.map +0 -1
  191. package/lib/generate/index.js.map +0 -1
  192. package/lib/generate/input.js.map +0 -1
  193. package/lib/generate/parse.js.map +0 -1
  194. package/lib/generate/sourceFile.js.map +0 -1
  195. package/lib/generate/util.js.map +0 -1
  196. package/lib/graphql.js.map +0 -1
  197. package/lib/index.js.map +0 -1
  198. package/templates/component/jest.config.js +0 -4
  199. package/templates/component/package.json +0 -24
  200. package/templates/component/src/actions.ts +0 -33
  201. package/templates/component/src/client.ts +0 -7
  202. package/templates/component/src/connections.ts +0 -25
  203. package/templates/component/src/index.test.ts +0 -32
  204. package/templates/component/src/index.ts +0 -17
  205. package/templates/component/src/triggers.ts +0 -18
  206. package/templates/component/tsconfig.json +0 -19
  207. package/templates/component/webpack.config.js +0 -44
package/bin/run CHANGED
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- require("@oclif/command")
4
- .run()
5
- .then(require("@oclif/command/flush"))
6
- .catch((error) => {
7
- const oclifHandler = require("@oclif/errors/handle");
8
- const { default: prismHandler } = require("../lib/errors");
9
- prismHandler(error);
10
- return oclifHandler(error);
3
+ const { run, flush } = require("@oclif/core");
4
+ const handle = require("@oclif/core/handle");
5
+ const { processError } = require("../lib/errors");
6
+
7
+ run()
8
+ .then(flush)
9
+ .catch((err) => {
10
+ const processed = processError(err);
11
+ return handle(processed);
11
12
  });
package/lib/auth.js CHANGED
@@ -1,45 +1,18 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
28
- });
29
- };
30
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
31
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
4
  };
5
+ var _a;
33
6
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.isLoggedIn = exports.getAccessToken = exports.logout = exports.refresh = exports.login = exports.Authenticate = exports.createRequestParams = void 0;
7
+ exports.revokeRefreshToken = exports.isLoggedIn = exports.getAccessToken = exports.logout = exports.refresh = exports.login = exports.Authenticate = exports.createRequestParams = exports.prismaticUrl = void 0;
35
8
  const crypto_1 = __importDefault(require("crypto"));
36
- const cli_ux_1 = require("cli-ux");
37
9
  const http_1 = __importDefault(require("http"));
38
10
  const axios_1 = __importDefault(require("axios"));
39
11
  const url_1 = __importDefault(require("url"));
40
12
  const jwt_decode_1 = __importDefault(require("jwt-decode"));
41
13
  const config_1 = require("./config");
42
- const graphql_1 = __importStar(require("./graphql"));
14
+ const graphql_1 = require("./graphql");
15
+ const core_1 = require("@oclif/core");
43
16
  const urlEncodeBase64 = (buffer) => {
44
17
  if (typeof buffer === "string") {
45
18
  buffer = Buffer.from(buffer);
@@ -64,7 +37,8 @@ const extractRequestParams = (url) => {
64
37
  }
65
38
  return params;
66
39
  };
67
- exports.createRequestParams = (data) => Object.entries(data).reduce((result, [key, value]) => {
40
+ exports.prismaticUrl = (_a = process.env.PRISMATIC_URL) !== null && _a !== void 0 ? _a : "https://app.prismatic.io";
41
+ const createRequestParams = (data) => Object.entries(data).reduce((result, [key, value]) => {
68
42
  if (value === undefined)
69
43
  return result;
70
44
  const part = `${key}=${encodeURIComponent(value)}`;
@@ -73,7 +47,8 @@ exports.createRequestParams = (data) => Object.entries(data).reduce((result, [ke
73
47
  }
74
48
  return `${result}&${part}`;
75
49
  }, "");
76
- const validateAuthorizationToken = (url, expectedState) => __awaiter(void 0, void 0, void 0, function* () {
50
+ exports.createRequestParams = createRequestParams;
51
+ const validateAuthorizationToken = async (url, expectedState) => {
77
52
  const { code, state } = extractRequestParams(url);
78
53
  if (state !== expectedState) {
79
54
  throw new Error("Unexpected state value returned.");
@@ -82,7 +57,7 @@ const validateAuthorizationToken = (url, expectedState) => __awaiter(void 0, voi
82
57
  throw new Error("Did not receive authorization code");
83
58
  }
84
59
  return code;
85
- });
60
+ };
86
61
  /** Auth0's
87
62
  * @see {@link https://auth0.com/docs/flows/concepts/auth-code-pkce | Authorization Code Flow with Proof Key for Code Exchange (PKCE)}
88
63
  * authentication flow.
@@ -99,166 +74,148 @@ class Authenticate {
99
74
  * Start the PKCE authentication flow
100
75
  * @returns Promise containing authentication result
101
76
  */
102
- login(props) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- const verifier = codeVerifier();
105
- const challenge = codeChallenge(verifier);
106
- const state = codeState();
107
- const redirectUri = yield this.createRedirectServer();
108
- if (props === null || props === void 0 ? void 0 : props.url) {
109
- const challengeUrl = yield this.getChallengeUrl(challenge, state, redirectUri);
110
- console.log(challengeUrl);
111
- }
112
- else {
113
- yield this.openChallengeBrowser(challenge, state, redirectUri);
114
- }
115
- return new Promise((resolve, reject) => {
116
- // Close the redirect server if we don't get a response
117
- const timeoutHandle = setTimeout(this.redirectServer.close, 3 * 60 * 1000);
118
- this.redirectServer.on("request", (request, response) => {
119
- clearTimeout(timeoutHandle);
120
- response.writeHead(301, {
121
- Location: this.options.successRedirectUri,
122
- });
123
- response.end();
124
- this.redirectServer.close();
125
- validateAuthorizationToken(request.url, state)
126
- .then((authorizationToken) => __awaiter(this, void 0, void 0, function* () {
127
- return this.retrieveAuthenticationToken(verifier, authorizationToken, redirectUri);
128
- }))
129
- .then(resolve)
130
- .catch(reject);
77
+ async login(props) {
78
+ const verifier = codeVerifier();
79
+ const challenge = codeChallenge(verifier);
80
+ const state = codeState();
81
+ const redirectUri = await this.createRedirectServer();
82
+ if (props === null || props === void 0 ? void 0 : props.url) {
83
+ const challengeUrl = await this.getChallengeUrl(challenge, state, redirectUri);
84
+ console.log(challengeUrl);
85
+ }
86
+ else {
87
+ await this.openChallengeBrowser(challenge, state, redirectUri);
88
+ }
89
+ return new Promise((resolve, reject) => {
90
+ // Close the redirect server if we don't get a response
91
+ const timeoutHandle = setTimeout(this.redirectServer.close, 3 * 60 * 1000);
92
+ this.redirectServer.on("request", (request, response) => {
93
+ clearTimeout(timeoutHandle);
94
+ response.writeHead(301, {
95
+ Location: this.options.successRedirectUri,
131
96
  });
97
+ response.end();
98
+ this.redirectServer.close();
99
+ validateAuthorizationToken(request.url, state)
100
+ .then(async (authorizationToken) => this.retrieveAuthenticationToken(verifier, authorizationToken, redirectUri))
101
+ .then(resolve)
102
+ .catch(reject);
132
103
  });
133
104
  });
134
105
  }
135
- refresh(refreshToken) {
136
- return __awaiter(this, void 0, void 0, function* () {
137
- const data = {
138
- /* eslint-disable @typescript-eslint/camelcase */
139
- grant_type: "refresh_token",
140
- client_id: this.options.clientId,
141
- refresh_token: refreshToken,
142
- };
143
- const { data: response } = yield axios_1.default({
144
- method: "post",
145
- url: `https://${this.options.domain}/oauth/token`,
146
- data: exports.createRequestParams(data),
147
- headers: {
148
- "Content-Type": "application/x-www-form-urlencoded",
149
- },
150
- });
151
- return {
152
- accessToken: response.access_token,
153
- expiresIn: response.expires_in,
154
- refreshToken,
155
- scope: response.scope,
156
- tokenType: response.token_type,
157
- };
106
+ async refresh(refreshToken) {
107
+ const data = {
108
+ /* eslint-disable camelcase */
109
+ grant_type: "refresh_token",
110
+ client_id: this.options.clientId,
111
+ refresh_token: refreshToken,
112
+ /* eslint-enable camelcase */
113
+ };
114
+ const { data: response } = await (0, axios_1.default)({
115
+ method: "post",
116
+ url: `https://${this.options.domain}/oauth/token`,
117
+ data: (0, exports.createRequestParams)(data),
118
+ headers: {
119
+ "Content-Type": "application/x-www-form-urlencoded",
120
+ },
158
121
  });
122
+ return {
123
+ accessToken: response.access_token,
124
+ expiresIn: response.expires_in,
125
+ refreshToken,
126
+ scope: response.scope,
127
+ tokenType: response.token_type,
128
+ };
159
129
  }
160
- logout() {
161
- return __awaiter(this, void 0, void 0, function* () {
162
- const params = {
163
- // eslint-disable-next-line @typescript-eslint/camelcase
164
- client_id: this.options.clientId,
165
- returnTo: this.options.successRedirectUri,
166
- };
167
- const queryString = exports.createRequestParams(params);
168
- yield cli_ux_1.cli.open(`https://${this.options.domain}/logout?${queryString}`);
169
- });
130
+ async logout() {
131
+ const params = {
132
+ // eslint-disable-next-line camelcase
133
+ client_id: this.options.clientId,
134
+ returnTo: this.options.successRedirectUri,
135
+ };
136
+ const queryString = (0, exports.createRequestParams)(params);
137
+ await core_1.CliUx.ux.open(`https://${this.options.domain}/logout?${queryString}`);
138
+ await (0, config_1.deleteConfig)();
170
139
  }
171
- attemptServerCreate() {
172
- return __awaiter(this, void 0, void 0, function* () {
173
- return new Promise((resolve, reject) => {
174
- const server = http_1.default
175
- .createServer()
176
- .on("error", (e) => {
177
- server.close();
178
- reject(e);
179
- })
180
- .listen(randomPort(59400, 59450), "localhost", () => resolve(server));
181
- });
140
+ async attemptServerCreate() {
141
+ return new Promise((resolve, reject) => {
142
+ const server = http_1.default
143
+ .createServer()
144
+ .on("error", (e) => {
145
+ server.close();
146
+ reject(e);
147
+ })
148
+ .listen(randomPort(59400, 59450), "localhost", () => resolve(server));
182
149
  });
183
150
  }
184
- retry(retries, fn) {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- return fn().catch((e) => __awaiter(this, void 0, void 0, function* () { return retries > 1 ? this.retry(retries - 1, fn) : Promise.reject(e); }));
187
- });
151
+ async retry(retries, fn) {
152
+ return fn().catch(async (e) => retries > 1 ? this.retry(retries - 1, fn) : Promise.reject(e));
188
153
  }
189
- createRedirectServer() {
190
- return __awaiter(this, void 0, void 0, function* () {
191
- return new Promise((resolve, reject) => {
192
- this.retry(5, this.attemptServerCreate)
193
- .then((server) => {
194
- this.redirectServer = server;
195
- const info = server.address();
196
- resolve(`http://localhost:${info.port}`);
197
- })
198
- .catch(reject);
199
- });
154
+ async createRedirectServer() {
155
+ return new Promise((resolve, reject) => {
156
+ this.retry(5, this.attemptServerCreate)
157
+ .then((server) => {
158
+ this.redirectServer = server;
159
+ const info = server.address();
160
+ resolve(`http://localhost:${info.port}`);
161
+ })
162
+ .catch(reject);
200
163
  });
201
164
  }
202
- retrieveAuthenticationToken(verifier, code, redirectUri) {
203
- return __awaiter(this, void 0, void 0, function* () {
204
- const data = {
205
- /* eslint-disable @typescript-eslint/camelcase */
206
- grant_type: "authorization_code",
207
- client_id: this.options.clientId,
208
- code_verifier: verifier,
209
- code,
210
- redirect_uri: redirectUri,
211
- };
212
- const { data: response } = yield axios_1.default({
213
- method: "post",
214
- url: `https://${this.options.domain}/oauth/token`,
215
- data: exports.createRequestParams(data),
216
- headers: {
217
- "Content-Type": "application/x-www-form-urlencoded",
218
- },
219
- });
220
- return {
221
- accessToken: response.access_token,
222
- expiresIn: response.expires_in,
223
- refreshToken: response.refresh_token,
224
- scope: response.scope,
225
- tokenType: response.token_type,
226
- };
165
+ async retrieveAuthenticationToken(verifier, code, redirectUri) {
166
+ const data = {
167
+ /* eslint-disable camelcase */
168
+ grant_type: "authorization_code",
169
+ client_id: this.options.clientId,
170
+ code_verifier: verifier,
171
+ code,
172
+ redirect_uri: redirectUri,
173
+ /* eslint-enable camelcase */
174
+ };
175
+ const { data: response } = await (0, axios_1.default)({
176
+ method: "post",
177
+ url: `https://${this.options.domain}/oauth/token`,
178
+ data: (0, exports.createRequestParams)(data),
179
+ headers: {
180
+ "Content-Type": "application/x-www-form-urlencoded",
181
+ },
227
182
  });
183
+ return {
184
+ accessToken: response.access_token,
185
+ expiresIn: response.expires_in,
186
+ refreshToken: response.refresh_token,
187
+ scope: response.scope,
188
+ tokenType: response.token_type,
189
+ };
228
190
  }
229
- openChallengeBrowser(challenge, state, redirectUri) {
230
- return __awaiter(this, void 0, void 0, function* () {
231
- const challengeUrl = yield this.getChallengeUrl(challenge, state, redirectUri);
232
- yield cli_ux_1.cli.open(challengeUrl);
233
- });
191
+ async openChallengeBrowser(challenge, state, redirectUri) {
192
+ const challengeUrl = await this.getChallengeUrl(challenge, state, redirectUri);
193
+ await core_1.CliUx.ux.open(challengeUrl);
234
194
  }
235
- getChallengeUrl(challenge, state, redirectUri) {
236
- return __awaiter(this, void 0, void 0, function* () {
237
- const { clientId, audience, scopes } = this.options;
238
- const params = {
239
- /* eslint-disable @typescript-eslint/camelcase */
240
- response_type: "code",
241
- code_challenge: challenge,
242
- code_challenge_method: "S256",
243
- client_id: clientId,
244
- redirect_uri: redirectUri,
245
- scope: scopes.join(" "),
246
- state,
247
- audience,
248
- };
249
- const queryString = exports.createRequestParams(params);
250
- return `https://${this.options.domain}/authorize?${queryString}`;
251
- });
195
+ async getChallengeUrl(challenge, state, redirectUri) {
196
+ const { clientId, audience, scopes } = this.options;
197
+ const params = {
198
+ /* eslint-disable camelcase */
199
+ response_type: "code",
200
+ code_challenge: challenge,
201
+ code_challenge_method: "S256",
202
+ client_id: clientId,
203
+ redirect_uri: redirectUri,
204
+ scope: scopes.join(" "),
205
+ state,
206
+ audience,
207
+ /* eslint-enable camelcase */
208
+ };
209
+ const queryString = (0, exports.createRequestParams)(params);
210
+ return `https://${this.options.domain}/authorize?${queryString}`;
252
211
  }
253
212
  }
254
213
  exports.Authenticate = Authenticate;
255
214
  // TODO: Need to factor this out if we look to open source this auth logic.
256
- const getAuthOptions = () => __awaiter(void 0, void 0, void 0, function* () {
257
- var _a;
258
- const prismaticUrl = (_a = process.env.PRISMATIC_URL) !== null && _a !== void 0 ? _a : "https://app.prismatic.io";
259
- const { data: authConfig } = yield axios_1.default({
215
+ const getAuthOptions = async () => {
216
+ const { data: authConfig } = await (0, axios_1.default)({
260
217
  method: "get",
261
- url: url_1.default.resolve(prismaticUrl, "/auth/meta"),
218
+ url: new url_1.default.URL("/auth/meta", exports.prismaticUrl).toString(),
262
219
  });
263
220
  const { domain, clientId, audience } = authConfig;
264
221
  return {
@@ -268,59 +225,63 @@ const getAuthOptions = () => __awaiter(void 0, void 0, void 0, function* () {
268
225
  scopes: ["openid", "profile", "email", "offline_access"],
269
226
  successRedirectUri: "https://prismatic.io",
270
227
  };
271
- });
272
- exports.login = (props) => __awaiter(void 0, void 0, void 0, function* () {
273
- const authOptions = yield getAuthOptions();
228
+ };
229
+ const login = async (props) => {
230
+ const authOptions = await getAuthOptions();
274
231
  const auth = new Authenticate(authOptions);
275
- const response = yield auth.login({ url: props === null || props === void 0 ? void 0 : props.url });
276
- yield config_1.writeConfig(response);
277
- });
278
- exports.refresh = (refreshToken) => __awaiter(void 0, void 0, void 0, function* () {
279
- const authOptions = yield getAuthOptions();
232
+ const response = await auth.login({ url: props === null || props === void 0 ? void 0 : props.url });
233
+ await (0, config_1.writeConfig)(response);
234
+ };
235
+ exports.login = login;
236
+ const refresh = async (refreshToken) => {
237
+ const authOptions = await getAuthOptions();
280
238
  const auth = new Authenticate(authOptions);
281
- const response = yield auth.refresh(refreshToken);
282
- yield config_1.writeConfig(response);
239
+ const response = await auth.refresh(refreshToken);
240
+ await (0, config_1.writeConfig)(response);
283
241
  return response;
284
- });
285
- exports.logout = () => __awaiter(void 0, void 0, void 0, function* () {
286
- const authOptions = yield getAuthOptions();
242
+ };
243
+ exports.refresh = refresh;
244
+ const logout = async () => {
245
+ const authOptions = await getAuthOptions();
287
246
  const auth = new Authenticate(authOptions);
288
- yield auth.logout();
289
- });
247
+ await auth.logout();
248
+ };
249
+ exports.logout = logout;
290
250
  /**
291
251
  * Attempts to retrieve the access token for the active session. It prefers
292
252
  * the environment variables PRISM_ACCESS_TOKEN and PRISM_REFRESH_TOKEN first
293
253
  * but will use the config file values if those are not set. This function will
294
254
  * also refresh the access token using the provided refresh token if possible.
295
255
  */
296
- exports.getAccessToken = () => __awaiter(void 0, void 0, void 0, function* () {
256
+ const getAccessToken = async () => {
297
257
  const { PRISM_ACCESS_TOKEN: envAccessToken, PRISM_REFRESH_TOKEN: envRefreshToken, } = process.env;
298
- const config = yield config_1.readConfig();
258
+ const config = await (0, config_1.readConfig)();
299
259
  const { accessToken: configAccessToken, refreshToken: configRefreshToken } = config !== null && config !== void 0 ? config : {};
300
260
  const accessToken = envAccessToken !== null && envAccessToken !== void 0 ? envAccessToken : configAccessToken;
301
261
  const refreshToken = envRefreshToken !== null && envRefreshToken !== void 0 ? envRefreshToken : configRefreshToken;
302
262
  if (accessToken && refreshToken) {
303
263
  const now = Math.floor(new Date().getTime() / 1000);
304
- const { exp } = jwt_decode_1.default(accessToken);
264
+ const { exp } = (0, jwt_decode_1.default)(accessToken);
305
265
  // Refresh if expired or expiring in 5 minutes or less
306
266
  if (exp - now < 5 * 60) {
307
- const { accessToken: refreshedAccessToken } = yield exports.refresh(refreshToken);
267
+ const { accessToken: refreshedAccessToken } = await (0, exports.refresh)(refreshToken);
308
268
  return refreshedAccessToken;
309
269
  }
310
270
  }
311
271
  return accessToken;
312
- });
272
+ };
273
+ exports.getAccessToken = getAccessToken;
313
274
  /**
314
275
  * Check if the user is currently logged in. Return true if so, and false otherwise.
315
276
  */
316
- exports.isLoggedIn = () => __awaiter(void 0, void 0, void 0, function* () {
317
- const configExists = yield config_1.configFileExists();
277
+ const isLoggedIn = async () => {
278
+ const configExists = await (0, config_1.configFileExists)();
318
279
  if (!configExists) {
319
280
  return false;
320
281
  }
321
282
  try {
322
- yield graphql_1.default.query({
323
- query: graphql_1.gql `
283
+ await (0, graphql_1.gqlRequest)({
284
+ document: (0, graphql_1.gql) `
324
285
  query {
325
286
  authenticatedUser {
326
287
  id
@@ -329,9 +290,30 @@ exports.isLoggedIn = () => __awaiter(void 0, void 0, void 0, function* () {
329
290
  `,
330
291
  });
331
292
  }
332
- catch (_b) {
293
+ catch {
333
294
  return false;
334
295
  }
335
296
  return true;
336
- });
337
- //# sourceMappingURL=auth.js.map
297
+ };
298
+ exports.isLoggedIn = isLoggedIn;
299
+ /**
300
+ * Revoke ALL refresh tokens for the logged in user
301
+ */
302
+ const revokeRefreshToken = async () => {
303
+ const loggedIn = await (0, exports.isLoggedIn)();
304
+ if (!loggedIn) {
305
+ throw new Error("You are not currently logged in.");
306
+ }
307
+ const config = await (0, config_1.readConfig)();
308
+ const { refreshToken } = config !== null && config !== void 0 ? config : {};
309
+ await (0, axios_1.default)({
310
+ method: "post",
311
+ url: new url_1.default.URL("/auth/revoke", exports.prismaticUrl).toString(),
312
+ data: {
313
+ /* eslint-disable camelcase */
314
+ refresh_token: refreshToken,
315
+ },
316
+ });
317
+ await (0, exports.logout)();
318
+ };
319
+ exports.revokeRefreshToken = revokeRefreshToken;
@@ -1,42 +1,12 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
28
- });
29
- };
30
2
  Object.defineProperty(exports, "__esModule", { value: true });
31
- const command_1 = require("@oclif/command");
32
- const graphql_1 = __importStar(require("../../../graphql"));
33
- const cli_ux_1 = require("cli-ux");
34
- class ListCommand extends command_1.Command {
35
- run() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const { flags, args: { alertMonitorId }, } = this.parse(ListCommand);
38
- const result = yield graphql_1.default.query({
39
- query: graphql_1.gql `
3
+ const core_1 = require("@oclif/core");
4
+ const graphql_1 = require("../../../graphql");
5
+ class ListCommand extends core_1.Command {
6
+ async run() {
7
+ const { flags, args: { alertMonitorId }, } = await this.parse(ListCommand);
8
+ const result = await (0, graphql_1.gqlRequest)({
9
+ document: (0, graphql_1.gql) `
40
10
  query listAlertEvents($alertMonitorId: ID) {
41
11
  alertEvents(monitor: $alertMonitorId) {
42
12
  nodes {
@@ -50,25 +20,24 @@ class ListCommand extends command_1.Command {
50
20
  }
51
21
  }
52
22
  `,
53
- variables: {
54
- alertMonitorId,
55
- },
56
- });
57
- cli_ux_1.cli.table(result.data.alertEvents.nodes, {
58
- id: {
59
- minWidth: 8,
60
- extended: true,
61
- },
62
- name: {
63
- get: (row) => row.monitor.name,
64
- header: "Name",
65
- },
66
- createdAt: {
67
- header: "Timestamp",
68
- },
69
- details: {},
70
- }, Object.assign({}, flags));
23
+ variables: {
24
+ alertMonitorId,
25
+ },
71
26
  });
27
+ core_1.CliUx.ux.table(result.alertEvents.nodes, {
28
+ id: {
29
+ minWidth: 8,
30
+ extended: true,
31
+ },
32
+ name: {
33
+ get: (row) => row.monitor.name,
34
+ header: "Name",
35
+ },
36
+ createdAt: {
37
+ header: "Timestamp",
38
+ },
39
+ details: {},
40
+ }, { ...flags });
72
41
  }
73
42
  }
74
43
  exports.default = ListCommand;
@@ -80,5 +49,6 @@ ListCommand.args = [
80
49
  required: true,
81
50
  },
82
51
  ];
83
- ListCommand.flags = Object.assign({}, cli_ux_1.cli.table.flags());
84
- //# sourceMappingURL=list.js.map
52
+ ListCommand.flags = {
53
+ ...core_1.CliUx.ux.table.flags(),
54
+ };