@prismatic-io/prism 4.1.0 → 4.2.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.
package/lib/auth.js CHANGED
@@ -2,8 +2,9 @@
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
+ var _a;
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.revokeRefreshToken = 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;
7
8
  const crypto_1 = __importDefault(require("crypto"));
8
9
  const http_1 = __importDefault(require("http"));
9
10
  const axios_1 = __importDefault(require("axios"));
@@ -36,6 +37,7 @@ const extractRequestParams = (url) => {
36
37
  }
37
38
  return params;
38
39
  };
40
+ exports.prismaticUrl = (_a = process.env.PRISMATIC_URL) !== null && _a !== void 0 ? _a : "https://app.prismatic.io";
39
41
  const createRequestParams = (data) => Object.entries(data).reduce((result, [key, value]) => {
40
42
  if (value === undefined)
41
43
  return result;
@@ -211,11 +213,9 @@ class Authenticate {
211
213
  exports.Authenticate = Authenticate;
212
214
  // TODO: Need to factor this out if we look to open source this auth logic.
213
215
  const getAuthOptions = async () => {
214
- var _a;
215
- const prismaticUrl = (_a = process.env.PRISMATIC_URL) !== null && _a !== void 0 ? _a : "https://app.prismatic.io";
216
216
  const { data: authConfig } = await (0, axios_1.default)({
217
217
  method: "get",
218
- url: new url_1.default.URL("/auth/meta", prismaticUrl).toString(),
218
+ url: new url_1.default.URL("/auth/meta", exports.prismaticUrl).toString(),
219
219
  });
220
220
  const { domain, clientId, audience } = authConfig;
221
221
  return {
@@ -300,17 +300,15 @@ exports.isLoggedIn = isLoggedIn;
300
300
  * Revoke ALL refresh tokens for the logged in user
301
301
  */
302
302
  const revokeRefreshToken = async () => {
303
- var _a;
304
303
  const loggedIn = await (0, exports.isLoggedIn)();
305
304
  if (!loggedIn) {
306
305
  throw new Error("You are not currently logged in.");
307
306
  }
308
- const prismaticUrl = (_a = process.env.PRISMATIC_URL) !== null && _a !== void 0 ? _a : "https://app.prismatic.io";
309
307
  const config = await (0, config_1.readConfig)();
310
308
  const { refreshToken } = config !== null && config !== void 0 ? config : {};
311
309
  await (0, axios_1.default)({
312
310
  method: "post",
313
- url: new url_1.default.URL("/auth/revoke", prismaticUrl).toString(),
311
+ url: new url_1.default.URL("/auth/revoke", exports.prismaticUrl).toString(),
314
312
  data: {
315
313
  /* eslint-disable camelcase */
316
314
  refresh_token: refreshToken,
@@ -15,7 +15,7 @@ const spawnProcess = ([command, ...args], env) => {
15
15
  };
16
16
  class RunCommand extends core_1.Command {
17
17
  async run() {
18
- const { argv, flags: { integrationId, configVarKey }, } = await this.parse(RunCommand);
18
+ const { argv, flags: { integrationId, connectionKey }, } = await this.parse(RunCommand);
19
19
  const result = await (0, graphql_1.gqlRequest)({
20
20
  document: (0, graphql_1.gql) `
21
21
  query integration($id: ID!) {
@@ -42,7 +42,7 @@ class RunCommand extends core_1.Command {
42
42
  },
43
43
  });
44
44
  const nodes = result.integration.testConfigVariables.nodes;
45
- const [connection] = nodes.filter(({ requiredConfigVariable: { key } }) => key === configVarKey);
45
+ const [connection] = nodes.filter(({ requiredConfigVariable: { key } }) => key === connectionKey);
46
46
  if (!connection) {
47
47
  core_1.CliUx.ux.error("Failed to find active connection.", { exit: 1 });
48
48
  }
@@ -56,7 +56,21 @@ class RunCommand extends core_1.Command {
56
56
  }
57
57
  }
58
58
  exports.default = RunCommand;
59
- RunCommand.description = "Run an arbitrary command within a Prismatic context";
59
+ RunCommand.description = `Fetch an integration's active connection and execute a CLI command with that connection's fields as an environment variable.`;
60
+ RunCommand.usage = "prism components:dev:run -i <value> -c <value> -- /command/to/run";
61
+ RunCommand.examples = [
62
+ {
63
+ description: `To simply print an integration's basic auth config variable named "My Credentials" and pipe the resulting JSON to jq, run:`,
64
+ command: `$ prism components:dev:run
65
+ --integrationId SW50ZWdyYXRpb246Y2YyMjJlMWUtMzJiYy00NTNhLWIzOWQtYTliNzUwMDAyNjBk
66
+ --connectionKey "My Credentials" --
67
+ printenv \${PRISMATIC_CONNECTION_VALUE} | jq`,
68
+ },
69
+ {
70
+ description: `If one of your integrations has an authenticated OAuth 2.0 config variable "Slack Connection", you could run your component's unit tests with that environment variable:`,
71
+ command: `$ prism components:dev:run -i SW50ZWexample -c "Slack Connection" -- yarn run test`,
72
+ },
73
+ ];
60
74
  // Allow us to manually capture argv so we can isolate the wrapped command.
61
75
  RunCommand.strict = false;
62
76
  // TODO: Make this derive from the component manifest using the same
@@ -67,9 +81,9 @@ RunCommand.flags = {
67
81
  char: "i",
68
82
  description: "Integration ID",
69
83
  }),
70
- configVarKey: core_1.Flags.string({
84
+ connectionKey: core_1.Flags.string({
71
85
  required: true,
72
86
  char: "c",
73
- description: "Key of the Connection Config Var to fetch meta/state for",
87
+ description: "Key of the connection config variable to fetch meta/state for",
74
88
  }),
75
89
  };
@@ -179,7 +179,7 @@ class TestCommand extends core_1.Command {
179
179
  integrationInfo: {
180
180
  name: (0, definition_1.componentTestIntegrationName)(componentKey, name),
181
181
  },
182
- componentInfo: { key: componentKey, isPublic: isPublic !== null && isPublic !== void 0 ? isPublic : false },
182
+ componentInfo: { key: definition.key, isPublic: isPublic !== null && isPublic !== void 0 ? isPublic : false },
183
183
  actionInfo,
184
184
  connectionInfo,
185
185
  });
@@ -32,31 +32,10 @@ const path = __importStar(require("path"));
32
32
  const wsdl_tsclient_1 = require("wsdl-tsclient");
33
33
  const logger_1 = require("wsdl-tsclient/dist/src/utils/logger");
34
34
  const index_1 = require("../../../generate/index");
35
- const openapi_typescript_codegen_1 = require("openapi-typescript-codegen");
36
35
  const prettier_1 = __importDefault(require("prettier"));
37
36
  const glob_promise_1 = __importDefault(require("glob-promise"));
38
37
  const yeoman_1 = require("../../../yeoman");
39
38
  const componentNameRegex = /^[a-zA-Z0-9][a-zA-Z0-9-_]*[a-zA-Z0-9]$/;
40
- const insertText = /* javascript */ `
41
- interface EnhancedConfig extends Config {
42
- timeout?: number;
43
- CLIENT?: AxiosInstance;
44
- }
45
- export const EnhancedOpenAPI: EnhancedConfig = OpenAPI;`;
46
- const injectAxiosToOpenAPI = async (basePath) => {
47
- const fileLocation = path.resolve(basePath, "core", "request.ts");
48
- const replaceLocation = path.join(__dirname, "..", "..", "..", "..", "templates", "component", "openapi", "request.ts");
49
- await fs_1.promises.copyFile(replaceLocation, fileLocation);
50
- const file = path.resolve(basePath, "core", "OpenAPI.ts");
51
- const contents = await fs_1.promises.readFile(file);
52
- const parts = [contents, insertText].join("\n\n").split("\n");
53
- const additions = [
54
- ...parts.slice(0, 3),
55
- /* javascript */ `import { AxiosInstance } from "axios";`,
56
- ...parts.slice(3),
57
- ].join("\n");
58
- await fs_1.promises.writeFile(file, additions);
59
- };
60
39
  const getFilesToFormat = async (basename) => {
61
40
  return await (0, glob_promise_1.default)("**/*.ts", {
62
41
  ignore: ["**/node_modules/**"],
@@ -73,7 +52,7 @@ const formatSourceFiles = async (basePath, files) => {
73
52
  };
74
53
  class InitializeComponent extends core_1.Command {
75
54
  async run() {
76
- const { args: { name }, flags: { verbose, "wsdl-path": wsdlPath, "open-api-path": openApiPath, "skip-auth": skipAuth, "add-retry": addRetry, }, } = await this.parse(InitializeComponent);
55
+ const { args: { name }, flags: { verbose, "wsdl-path": wsdlPath, "open-api-path": openApiPath }, } = await this.parse(InitializeComponent);
77
56
  if (!componentNameRegex.test(name)) {
78
57
  this.error(`'${name}' contains invalid characters. Please select a component name that starts and ends with alphanumeric characters, and contains only alphanumeric characters, hyphens, and underscores. See https://regex101.com/?regex=${encodeURIComponent(componentNameRegex.source)}`, { exit: 1 });
79
58
  }
@@ -82,81 +61,50 @@ class InitializeComponent extends core_1.Command {
82
61
  exit: 1,
83
62
  });
84
63
  }
85
- if (skipAuth && !openApiPath) {
86
- this.error("Auth templating is only supported when generating components from Open API specifications", {
87
- exit: 1,
88
- });
89
- }
90
- if (addRetry && !openApiPath) {
91
- this.error("HTTP retry logic is only supported when generating components from OpenAPI specifications", {
92
- exit: 1,
93
- });
94
- }
95
64
  this.log(`Creating component directory for "${name}"...`);
96
65
  await fs_1.promises.mkdir(name);
97
66
  const cwd = process.cwd();
98
67
  process.chdir(name);
99
- await (0, yeoman_1.runGenerator)("component", process.env.NODE_ENV === "test"
100
- ? {
68
+ if (openApiPath) {
69
+ await (0, yeoman_1.runGenerator)("formats", {
101
70
  name,
102
- description: "Prism-generated Component",
103
- connectionType: "basic",
104
- skipInstall: true,
105
- }
106
- : { name, skipInstall: Boolean(wsdlPath) || Boolean(openApiPath) });
107
- process.chdir(cwd);
108
- if (wsdlPath) {
109
- if (!verbose) {
110
- // wsdl-tsclient emits pretty noisy logs that aren't particularly useful
111
- logger_1.Logger.disabled();
112
- }
113
- const wsdlName = path.basename(wsdlPath).split(".wsdl")[0];
114
- await (0, wsdl_tsclient_1.parseAndGenerate)(wsdlPath, path.join(name), {
115
- caseInsensitiveNames: true,
116
- });
117
- await (0, index_1.generate)({
118
- projectRoot: name,
119
- projectTemplateName: wsdlName,
120
- projectTemplatePath: wsdlPath,
121
- projectType: "wsdl",
122
- includeClient: false,
123
- addRetry: false,
124
- });
125
- await (0, index_1.updatePackageJson)({
126
- path: path.resolve(name, "package.json"),
127
- dependencies: { soap: "0.40.0" },
71
+ openapi: openApiPath,
128
72
  });
129
73
  }
130
- else if (openApiPath) {
131
- const openApiName = path.basename(openApiPath).split(".")[0];
132
- const basePath = path.resolve(name, openApiName);
133
- await (0, openapi_typescript_codegen_1.generate)({
134
- input: openApiPath,
135
- output: path.join(name, openApiName),
136
- httpClient: openapi_typescript_codegen_1.HttpClient.NODE,
137
- useUnionTypes: true, // handles the case of enums using reserved keywords
138
- });
139
- await (0, index_1.generate)({
140
- projectRoot: name,
141
- projectTemplateName: openApiName,
142
- projectTemplatePath: openApiPath,
143
- projectType: "openApi",
144
- includeClient: !skipAuth,
145
- addRetry,
146
- });
147
- await (0, index_1.updatePackageJson)({
148
- path: path.resolve(name, "package.json"),
149
- dependencies: {
150
- axios: "0.21.4",
151
- "axios-retry": "3.1.9",
152
- "form-data": "4.0.0",
153
- },
154
- });
155
- await injectAxiosToOpenAPI(basePath);
156
- const filesToFormat = await getFilesToFormat(basePath);
157
- await formatSourceFiles(basePath, filesToFormat);
158
- }
159
- this.log(`
74
+ else {
75
+ // Legacy code paths (mostly; keep the component generator call)
76
+ await (0, yeoman_1.runGenerator)("component", process.env.NODE_ENV === "test"
77
+ ? {
78
+ name,
79
+ description: "Prism-generated Component",
80
+ connectionType: "basic",
81
+ skipInstall: true,
82
+ }
83
+ : { name, skipInstall: Boolean(wsdlPath) });
84
+ // Need to pop back as the WSDL generator assumes it's a directory up
85
+ process.chdir(cwd);
86
+ if (wsdlPath) {
87
+ if (!verbose) {
88
+ // wsdl-tsclient emits pretty noisy logs that aren't particularly useful
89
+ logger_1.Logger.disabled();
90
+ }
91
+ const wsdlName = path.basename(wsdlPath).split(".wsdl")[0];
92
+ await (0, wsdl_tsclient_1.parseAndGenerate)(wsdlPath, name, {
93
+ caseInsensitiveNames: true,
94
+ });
95
+ await (0, index_1.generate)({
96
+ projectRoot: name,
97
+ projectTemplateName: wsdlName,
98
+ projectTemplatePath: wsdlPath,
99
+ });
100
+ await (0, index_1.updatePackageJson)({
101
+ path: path.resolve(name, "package.json"),
102
+ dependencies: { soap: "0.40.0" },
103
+ });
104
+ const filesToFormat = await getFilesToFormat(name);
105
+ await formatSourceFiles(name, filesToFormat);
106
+ }
107
+ this.log(`
160
108
  "${name}" is ready for development.
161
109
  To install dependencies, run either "npm install" or "yarn install"
162
110
  To test the component, run "npm run test" or "yarn test"
@@ -165,6 +113,7 @@ To publish the component, run "prism components:publish"
165
113
 
166
114
  For documentation on writing custom components, visit https://prismatic.io/docs/custom-components/writing-custom-components/
167
115
  `);
116
+ }
168
117
  }
169
118
  }
170
119
  exports.default = InitializeComponent;
@@ -178,21 +127,11 @@ InitializeComponent.flags = {
178
127
  required: false,
179
128
  description: "The path to an OpenAPI Specification file (JSON or YAML) used to generate a Component",
180
129
  }),
181
- "skip-auth": core_1.Flags.boolean({
182
- required: false,
183
- default: false,
184
- description: "Skip templating authentication for an OpenAPI-based component. Use this option for OpenAPI specs that do not require authentication.",
185
- }),
186
130
  verbose: core_1.Flags.boolean({
187
131
  required: false,
188
132
  default: false,
189
133
  description: "Output more verbose logging from Component generation",
190
134
  }),
191
- "add-retry": core_1.Flags.boolean({
192
- required: false,
193
- default: false,
194
- description: "Add inputs to each action to utilize Axios retry logic",
195
- }),
196
135
  };
197
136
  InitializeComponent.args = [
198
137
  {
@@ -18,6 +18,7 @@ class ListCommand extends core_1.Command {
18
18
  id
19
19
  name
20
20
  description
21
+ enabled
21
22
  customer {
22
23
  id
23
24
  name
@@ -42,6 +43,7 @@ class ListCommand extends core_1.Command {
42
43
  extended: true,
43
44
  },
44
45
  description: {},
46
+ enabled: { extended: true },
45
47
  }, { ...flags });
46
48
  }
47
49
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@oclif/core");
4
+ const auth_1 = require("../../auth");
4
5
  const query_1 = require("../../utils/user/query");
5
6
  class WhoAmICommand extends core_1.Command {
6
7
  async run() {
@@ -14,6 +15,7 @@ class WhoAmICommand extends core_1.Command {
14
15
  else if (customer) {
15
16
  this.log("Customer:", customer.name);
16
17
  }
18
+ this.log("Endpoint URL:", auth_1.prismaticUrl);
17
19
  }
18
20
  }
19
21
  exports.default = WhoAmICommand;
@@ -44,45 +44,19 @@ const getPerformFunctionWSDL = (projectTemplatePath, action) => {
44
44
  })
45
45
  .join(",")});`;
46
46
  };
47
- const getPerformFunctionOpenApi = ({ actionObject, service, methodSignature, }) => {
48
- const properties = actionObject.inputs.flatMap(({ properties }) => properties.map(({ propertyName }) => propertyName)) || [];
49
- const propertiesText = properties.join(",");
50
- return `const result = await ${service}.${methodSignature.getName()}(${propertiesText});`;
51
- };
52
- const instantiatePerformFunction = (action, project, includeClient, addRetry) => {
53
- const { projectTemplatePath, projectType } = project;
54
- const clientCallParams = (0, util_1.appendRequiredFields)({
55
- inputFields: ["connection"],
56
- addRetry,
57
- includeClient,
58
- });
59
- const clientCall = `initializeClient({ ${clientCallParams.join(", ")} });`;
60
- let performFunction;
61
- if (projectType === "wsdl") {
62
- performFunction = getPerformFunctionWSDL(projectTemplatePath, action);
63
- }
64
- else {
65
- performFunction = getPerformFunctionOpenApi(action);
66
- }
47
+ const instantiatePerformFunction = (action, project) => {
48
+ const { projectTemplatePath } = project;
49
+ const performFunction = getPerformFunctionWSDL(projectTemplatePath, action);
67
50
  const performParams = action.actionObject.inputs
68
51
  .filter(({ shouldImport }) => shouldImport)
69
52
  .map(({ properties, shouldImport }) => {
70
53
  const name = properties.map(({ propertyName }) => propertyName).join(",");
71
54
  return shouldImport ? name : "";
72
55
  });
73
- const updatedPerformParams = (0, util_1.appendRequiredFields)({
74
- inputFields: includeClient
75
- ? ["connection", ...performParams]
76
- : projectType === "wsdl"
77
- ? [...performParams, "headers"]
78
- : performParams,
79
- addRetry,
80
- includeClient,
81
- });
56
+ const updatedPerformParams = [...performParams, "headers"];
82
57
  return `async ({logger}, ${updatedPerformParams.length > 0
83
58
  ? `{ ${updatedPerformParams.join(", ")} }: Record<string,any>`
84
59
  : ""}) => {
85
- ${projectType === "openApi" && includeClient ? clientCall : ""}
86
60
  ${performFunction}
87
61
  return {data: result};
88
62
  }`;
@@ -128,7 +102,7 @@ const compileAction = (actionService, actionMethod, project) => {
128
102
  actionObject: generateActionObject(actionMethod, project),
129
103
  });
130
104
  };
131
- const writeAction = async (action, project, includeClient, addRetry) => {
105
+ const writeAction = async (action, project) => {
132
106
  const { actionFile } = project;
133
107
  // Apparently you can't generate an Object without adding it to the file
134
108
  // so this is our place holder to use as a template
@@ -147,16 +121,6 @@ const writeAction = async (action, project, includeClient, addRetry) => {
147
121
  }
148
122
  return shouldImport ? [name] : [];
149
123
  });
150
- const updatedInputFields = (0, util_1.appendRequiredFields)({
151
- inputFields: includeClient
152
- ? [
153
- `connection: { type: "connection", label: "connection", required: true }`,
154
- ...inputFields,
155
- ]
156
- : inputFields,
157
- includeClient,
158
- addRetry,
159
- });
160
124
  object.addPropertyAssignments([
161
125
  {
162
126
  name: "display",
@@ -167,21 +131,19 @@ const writeAction = async (action, project, includeClient, addRetry) => {
167
131
  },
168
132
  {
169
133
  name: "perform",
170
- initializer: instantiatePerformFunction(action, project, includeClient, project.projectType === "openApi" && addRetry),
134
+ initializer: instantiatePerformFunction(action, project),
171
135
  },
172
136
  {
173
137
  name: "inputs",
174
- initializer: `{${project.projectType === "wsdl"
175
- ? [
176
- ...updatedInputFields,
177
- `headers: {
138
+ initializer: `{${[
139
+ ...inputFields,
140
+ `headers: {
178
141
  label: "Headers",
179
142
  type: "code",
180
143
  comments: "Provide headers to the SOAP client",
181
144
  default: '{}'
182
145
  }`,
183
- ]
184
- : [...updatedInputFields].join(", ")}}`,
146
+ ]}}`,
185
147
  },
186
148
  ]);
187
149
  //Add the action payload to the action
@@ -211,16 +173,8 @@ const writeInputsImport = async (inputNames, { actionFile }) => {
211
173
  namedImports: inputNames,
212
174
  });
213
175
  };
214
- const generateActions = async (project, includeClient, addRetry) => {
215
- const { projectType, actionFile, inputsFile } = project;
216
- if (projectType === "openApi" && includeClient) {
217
- actionFile.addImportDeclarations([
218
- {
219
- moduleSpecifier: `./client`,
220
- namedImports: ["initializeClient"],
221
- },
222
- ]);
223
- }
176
+ const generateActions = async (project) => {
177
+ const { actionFile, inputsFile } = project;
224
178
  const methods = (0, parse_1.getActionMethods)(project);
225
179
  const actions = (0, lodash_1.sortBy)(Object.entries(methods).flatMap(([service, actionMethods]) => {
226
180
  const dedupedActions = (0, lodash_1.uniqBy)(actionMethods, (a) => a.getName());
@@ -239,14 +193,8 @@ const generateActions = async (project, includeClient, addRetry) => {
239
193
  const dedupedServices = (0, lodash_1.sortBy)((0, lodash_1.uniq)(services));
240
194
  await writeServicesImport(dedupedServices, project);
241
195
  const inputNames = dedupedInputs.map(({ propertyName }) => propertyName);
242
- await writeInputsImport(projectType === "openApi"
243
- ? (await (0, util_1.appendRequiredFields)({
244
- inputFields: inputNames,
245
- includeClient,
246
- addRetry,
247
- })) || []
248
- : inputNames, project);
249
- const actionPromises = actions.map((action) => writeAction(action, project, includeClient, projectType === "openApi" && addRetry));
196
+ await writeInputsImport(inputNames, project);
197
+ const actionPromises = actions.map((action) => writeAction(action, project));
250
198
  await Promise.all(actionPromises);
251
199
  const actionExports = (0, lodash_1.sortBy)(actions.map(({ key }) => key));
252
200
  actionFile.addExportAssignment({
@@ -30,19 +30,13 @@ exports.updatePackageJson = exports.generate = void 0;
30
30
  const path = __importStar(require("path"));
31
31
  const sourceFile_1 = require("./sourceFile");
32
32
  const action_1 = require("./action");
33
- const client_1 = require("./client");
34
- const connection_1 = require("./connection");
35
33
  const prettier_1 = __importDefault(require("prettier"));
36
34
  const fs_extra_1 = require("fs-extra");
37
- const generate = async ({ projectRoot, projectTemplateName, projectTemplatePath, projectType, includeClient, addRetry, }) => {
35
+ const generate = async ({ projectRoot, projectTemplateName, projectTemplatePath, }) => {
38
36
  var _a;
39
- const project = (0, sourceFile_1.initializeProject)(projectRoot, projectTemplateName, projectTemplatePath, projectType, includeClient, addRetry);
37
+ const project = (0, sourceFile_1.initializeProject)(projectRoot, projectTemplateName, projectTemplatePath);
40
38
  const { componentProject } = project;
41
- if (projectType === "openApi" && includeClient) {
42
- await (0, client_1.generateClient)(project);
43
- await (0, connection_1.generateConnections)(project);
44
- }
45
- await (0, action_1.generateActions)(project, includeClient, projectType === "openApi" && addRetry);
39
+ await (0, action_1.generateActions)(project);
46
40
  (_a = componentProject
47
41
  .getSourceFile(path.join(projectRoot, "src", "index.test.ts"))) === null || _a === void 0 ? void 0 : _a.delete();
48
42
  await componentProject.save();
@@ -41,71 +41,19 @@ const getWSDLClientMethods = (clientPath, clientInterface, componentProject) =>
41
41
  process.exit(1);
42
42
  }
43
43
  };
44
- const getOpenApiMethods = (servicesPath, componentProject) => {
45
- try {
46
- const servicesFiles = componentProject
47
- .getDirectoryOrThrow(servicesPath)
48
- .getSourceFiles();
49
- const serviceToMethodsMapping = Object.fromEntries(servicesFiles.map((serviceFile) => {
50
- let methods = [];
51
- const serviceClass = serviceFile.getClassOrThrow(serviceFile.getBaseName().split(".ts")[0]);
52
- methods = serviceClass
53
- .getMethods()
54
- .map((method) => method.getSignature().getDeclaration());
55
- return [serviceClass.getNameOrThrow(), methods];
56
- }));
57
- return serviceToMethodsMapping;
58
- }
59
- catch (error) {
60
- console.error("Unable to find services directory." + error);
61
- process.exit(1);
62
- }
63
- };
64
- const isPrimitiveType = (type) => type.isObject() ||
65
- type.isLiteral() ||
66
- type.isString() ||
67
- type.isBoolean() ||
68
- type.isNumber() ||
69
- type.isAny() ||
70
- type.isUndefined();
71
44
  const getParamTypeDefinition = (project, parameter) => {
72
- const { componentProject, projectType, projectRoot, definitionDirectory } = project;
73
- if (projectType === "wsdl") {
74
- const paramName = parameter.getName();
75
- return componentProject.getSourceFile(path.join(projectRoot, definitionDirectory, "definitions", `${(0, camelcase_1.default)(!paramName.includes("Param")
76
- ? paramName
77
- : paramName.split("Param")[0], {
78
- pascalCase: true,
79
- })}.ts`));
80
- }
81
- else if (projectType === "openApi") {
82
- // The OpenAPI generator skips certain types
83
- const paramType = parameter.getType();
84
- if (isPrimitiveType(paramType) ||
85
- paramType.getUnionTypes().every(isPrimitiveType)) {
86
- return undefined;
87
- }
88
- return componentProject.getSourceFile(path.join(projectRoot, definitionDirectory, "models", `${(0, camelcase_1.default)(parameter.getName(), {
89
- pascalCase: true,
90
- })}.ts`));
91
- }
92
- else {
93
- console.error("Not implemented");
94
- process.exit(1);
95
- }
45
+ const { componentProject, projectRoot, definitionDirectory } = project;
46
+ const paramName = parameter.getName();
47
+ return componentProject.getSourceFile(path.join(projectRoot, definitionDirectory, "definitions", `${(0, camelcase_1.default)(!paramName.includes("Param") ? paramName : paramName.split("Param")[0], {
48
+ pascalCase: true,
49
+ })}.ts`));
96
50
  };
97
51
  exports.getParamTypeDefinition = getParamTypeDefinition;
98
52
  // Gather the methods that will be translated to actions
99
53
  const getActionMethods = (projectStructure) => {
100
54
  const { projectRoot, componentProject, projectTemplateName, definitionDirectory, } = projectStructure;
101
- let serviceMethods = {};
102
- if (projectStructure.projectType === "wsdl") {
103
- const methods = getWSDLClientMethods(path.join(projectRoot, definitionDirectory, "client.ts"), `${(0, camelcase_1.default)(projectTemplateName, { pascalCase: true })}Client`, componentProject);
104
- serviceMethods["createClientAsync"] = methods;
105
- }
106
- else if (projectStructure.projectType === "openApi") {
107
- serviceMethods = getOpenApiMethods(path.join(projectRoot, definitionDirectory, "services"), componentProject);
108
- }
109
- return serviceMethods;
55
+ return {
56
+ createClientAsync: getWSDLClientMethods(path.join(projectRoot, definitionDirectory, "client.ts"), `${(0, camelcase_1.default)(projectTemplateName, { pascalCase: true })}Client`, componentProject),
57
+ };
110
58
  };
111
59
  exports.getActionMethods = getActionMethods;