stepzen 0.26.0 → 0.27.0-beta.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/README.md +35 -9
- package/lib/commands/import.d.ts +88 -94
- package/lib/commands/import.d.ts.map +1 -1
- package/lib/commands/import.js +191 -140
- package/lib/commands/import.js.map +1 -1
- package/lib/commands/request.d.ts +4 -1
- package/lib/commands/request.d.ts.map +1 -1
- package/lib/commands/request.js +39 -26
- package/lib/commands/request.js.map +1 -1
- package/lib/generate/helpers.d.ts +1 -12
- package/lib/generate/helpers.d.ts.map +1 -1
- package/lib/generate/helpers.js +1 -149
- package/lib/generate/helpers.js.map +1 -1
- package/lib/generate/index.d.ts +0 -8
- package/lib/generate/index.d.ts.map +1 -1
- package/lib/generate/index.js +0 -100
- package/lib/generate/index.js.map +1 -1
- package/lib/generate/sql2sdl.d.ts +29 -7
- package/lib/generate/sql2sdl.d.ts.map +1 -1
- package/lib/generate/sql2sdl.js +95 -32
- package/lib/generate/sql2sdl.js.map +1 -1
- package/lib/shared/constants.d.ts +0 -3
- package/lib/shared/constants.d.ts.map +1 -1
- package/lib/shared/constants.js +2 -8
- package/lib/shared/constants.js.map +1 -1
- package/lib/shared/inquirer.d.ts +1 -1
- package/lib/shared/inquirer.d.ts.map +1 -1
- package/lib/shared/inquirer.js.map +1 -1
- package/lib/shared/request-variables-parser.d.ts +1 -1
- package/lib/shared/request-variables-parser.d.ts.map +1 -1
- package/lib/shared/request-variables-parser.js +27 -20
- package/lib/shared/request-variables-parser.js.map +1 -1
- package/lib/shared/types.d.ts +6 -0
- package/lib/shared/types.d.ts.map +1 -1
- package/lib/shared/zen-command.d.ts +3 -1
- package/lib/shared/zen-command.d.ts.map +1 -1
- package/lib/shared/zen-command.js +38 -9
- package/lib/shared/zen-command.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +7 -7
package/lib/commands/request.js
CHANGED
|
@@ -41,7 +41,7 @@ class Request extends zen_command_1.default {
|
|
|
41
41
|
const { args, flags } = this.parse(Request);
|
|
42
42
|
const operation = this.getRequestOperation(args.query, flags['operation-name']);
|
|
43
43
|
const variables = this.getRequestVariables(operation, flags.var, flags['var-file']);
|
|
44
|
-
const
|
|
44
|
+
const customHeaders = this.getAdditionalRequestHeaders(flags.header);
|
|
45
45
|
// Make sure the user is logged in
|
|
46
46
|
const { configuration } = await this.ensureStepZenAccount();
|
|
47
47
|
const zenserv = (0, constants_1.getZenServUrl)(configuration);
|
|
@@ -55,8 +55,14 @@ class Request extends zen_command_1.default {
|
|
|
55
55
|
});
|
|
56
56
|
endpoint = workspace.endpoint;
|
|
57
57
|
}
|
|
58
|
+
const { result: userAgent } = await (0, stepzen_sdk_1.tryZenCtl2ThenZenCtl1)(configuration, stepzen => Promise.resolve(stepzen.userAgent));
|
|
59
|
+
const headers = {
|
|
60
|
+
authorization: `APIKey ${configuration.adminkey}`,
|
|
61
|
+
'user-agent': userAgent,
|
|
62
|
+
...customHeaders.added,
|
|
63
|
+
};
|
|
64
|
+
customHeaders.removed.forEach(header => delete headers[header]);
|
|
58
65
|
try {
|
|
59
|
-
const { result: userAgent } = await (0, stepzen_sdk_1.tryZenCtl2ThenZenCtl1)(configuration, stepzen => Promise.resolve(stepzen.userAgent));
|
|
60
66
|
if (operation.operation === 'subscription') {
|
|
61
67
|
const url = `${zenserv}/stepzen-subscriptions/${endpoint}/__graphql`.replace(/^http/i, 'ws');
|
|
62
68
|
const client = (0, graphql_ws_1.createClient)({
|
|
@@ -64,11 +70,7 @@ class Request extends zen_command_1.default {
|
|
|
64
70
|
url,
|
|
65
71
|
connectionParams: () => {
|
|
66
72
|
return {
|
|
67
|
-
headers
|
|
68
|
-
authorization: `APIKey ${configuration.apikey}`,
|
|
69
|
-
'user-agent': userAgent,
|
|
70
|
-
...headers,
|
|
71
|
-
},
|
|
73
|
+
headers,
|
|
72
74
|
};
|
|
73
75
|
},
|
|
74
76
|
});
|
|
@@ -121,11 +123,7 @@ class Request extends zen_command_1.default {
|
|
|
121
123
|
query: args.query,
|
|
122
124
|
variables,
|
|
123
125
|
operationName: flags['operation-name'],
|
|
124
|
-
headers
|
|
125
|
-
authorization: `APIKey ${configuration.apikey}`,
|
|
126
|
-
'user-agent': userAgent,
|
|
127
|
-
...headers,
|
|
128
|
-
},
|
|
126
|
+
headers,
|
|
129
127
|
});
|
|
130
128
|
if (!result.data && result.errors) {
|
|
131
129
|
throw new Error(formatErrorMessage(result.errors));
|
|
@@ -176,42 +174,53 @@ class Request extends zen_command_1.default {
|
|
|
176
174
|
return operations[0];
|
|
177
175
|
}
|
|
178
176
|
getRequestVariables(opdef, variableFlags, varFileFlag) {
|
|
177
|
+
let varFile = {};
|
|
179
178
|
if (varFileFlag) {
|
|
180
179
|
try {
|
|
181
|
-
|
|
180
|
+
varFile = JSON.parse(fs.readFileSync(varFileFlag, 'utf8'));
|
|
182
181
|
}
|
|
183
182
|
catch (error) {
|
|
184
183
|
throw new errors_1.CLIError(`Cannot read request variables from ${varFileFlag}.\n${error}`);
|
|
185
184
|
}
|
|
186
185
|
}
|
|
187
|
-
const { variables, errors } = (0, request_variables_parser_1.parseRequestVariables)(variableFlags || [], opdef);
|
|
186
|
+
const { variables: flagVariables, errors } = (0, request_variables_parser_1.parseRequestVariables)(variableFlags || [], opdef, varFile);
|
|
188
187
|
if (errors.length > 0) {
|
|
189
|
-
|
|
188
|
+
const msg = variableFlags?.length || varFileFlag
|
|
189
|
+
? 'Could not resolve request variables'
|
|
190
|
+
: 'Missing request variables';
|
|
191
|
+
throw new errors_1.CLIError(chalk `${msg}\n - ` + errors.join('\n - '));
|
|
190
192
|
}
|
|
191
|
-
return
|
|
193
|
+
return {
|
|
194
|
+
...varFile,
|
|
195
|
+
...flagVariables,
|
|
196
|
+
};
|
|
192
197
|
}
|
|
193
198
|
getAdditionalRequestHeaders(headerFlagValues) {
|
|
194
|
-
const
|
|
199
|
+
const added = {};
|
|
200
|
+
const removed = [];
|
|
195
201
|
if (headerFlagValues) {
|
|
196
202
|
headerFlagValues.forEach(headerFlag => {
|
|
197
203
|
const headerOrError = (0, header_1.parseHeader)(headerFlag);
|
|
198
204
|
if (headerOrError && 'error' in headerOrError) {
|
|
199
205
|
throw new errors_1.CLIError(headerOrError.error);
|
|
200
206
|
}
|
|
201
|
-
// A `null` from parseHeader() means a header should NOT be
|
|
202
|
-
// sent. This is not supported by zenserv / the introspection service
|
|
203
|
-
// so the CLI simply omits such headers
|
|
207
|
+
// A `null` from parseHeader() means a header should NOT be sent.
|
|
204
208
|
if (!headerOrError) {
|
|
209
|
+
const name = headerFlag.substring(0, headerFlag.length - 1);
|
|
210
|
+
removed.push(name.toLowerCase());
|
|
205
211
|
return;
|
|
206
212
|
}
|
|
207
213
|
const name = headerOrError.name.toLowerCase();
|
|
208
214
|
const value = headerOrError.value;
|
|
209
215
|
// Combine repeated headers into one
|
|
210
216
|
// https://stackoverflow.com/questions/3096888
|
|
211
|
-
|
|
217
|
+
added[name] = added[name] ? `${added[name]},${value}` : value;
|
|
212
218
|
});
|
|
213
219
|
}
|
|
214
|
-
return
|
|
220
|
+
return {
|
|
221
|
+
added,
|
|
222
|
+
removed,
|
|
223
|
+
};
|
|
215
224
|
}
|
|
216
225
|
}
|
|
217
226
|
exports.default = Request;
|
|
@@ -236,7 +245,11 @@ Request.flags = {
|
|
|
236
245
|
`\n` +
|
|
237
246
|
`\nExample:` +
|
|
238
247
|
`\nstepzen request '{ user(id: "u123") { email } }' \\` +
|
|
239
|
-
`\n\t-H "X-API-Token: SecretAPIToken"
|
|
248
|
+
`\n\t-H "X-API-Token: SecretAPIToken"` +
|
|
249
|
+
`\n` +
|
|
250
|
+
chalk `\nUse the {bold -H "Header-Name:"} syntax to drop a default` +
|
|
251
|
+
chalk ` header, and the {bold -H "Header-Name;"} syntax to send a` +
|
|
252
|
+
` header with an empty value.`,
|
|
240
253
|
multiple: true,
|
|
241
254
|
}),
|
|
242
255
|
'operation-name': command_1.flags.string({
|
|
@@ -252,17 +265,17 @@ Request.flags = {
|
|
|
252
265
|
`\n\t--var 'search=space ninja' \\` +
|
|
253
266
|
`\n\t--var limit=5`,
|
|
254
267
|
multiple: true,
|
|
255
|
-
exclusive: ['var-file'],
|
|
256
268
|
}),
|
|
257
269
|
'var-file': command_1.flags.string({
|
|
258
|
-
description: chalk `Read request variables from a JSON file` +
|
|
270
|
+
description: chalk `Read request variables from a JSON file. In case when the same` +
|
|
271
|
+
chalk ` variable value is provided both via {bold --var-file} and` +
|
|
272
|
+
chalk ` {bold --var}, the priority is given to the latter.` +
|
|
259
273
|
`\n` +
|
|
260
274
|
`\nExample:` +
|
|
261
275
|
`\nstepzen request 'query OrdersQuery($search: String!, $limit: Int) {` +
|
|
262
276
|
`\n\t\torders(search: $search, limit: $limit) { id createdAt }` +
|
|
263
277
|
`\n\t}' \\` +
|
|
264
278
|
`\n\t--var-file ./vars.json`,
|
|
265
|
-
exclusive: ['var'],
|
|
266
279
|
}),
|
|
267
280
|
};
|
|
268
281
|
Request.args = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/commands/request.ts"],"names":[],"mappings":";AAAA,mDAAmD;;AAEnD,iEAAiE;AACjE,sEAAsE;AACtE,4CAA4C;AAC5C,oEAAoE;AAEpE,+BAA8B;AAC9B,yBAAwB;AACxB,4CAAoC;AACpC,0CAAsC;AACtC,2CAAuC;AACvC,qCAA6B;AAC7B,2BAA4B;AAC5B,sCAA8C;AAC9C,gDAA+C;AAE/C,uDAA2D;AAC3D,uDAA8C;AAC9C,mDAAiD;AACjD,2CAA+C;AAQ/C,iFAAwE;AACxE,6CAA4C;AAE5C,MAAM,kBAAkB,GAAG,CAAC,MAA+B,EAAU,EAAE;IACrE,IAAI,+BAA+B,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QAC9D,iEAAiE;QACjE,8DAA8D;QAC9D,gEAAgE;QAChE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;KACzB;IAED,OAAO,CACL,0CAA0C;QAC1C,MAAM;aACH,GAAG,CACF,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,EAAE,EAAE,CACvB,KAAK;YACL,CAAC,SAAS;gBACR,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;gBAClE,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CACV;aACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAqB,OAAQ,SAAQ,qBAAU;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/commands/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const createGeneratorFiles: (id: string, details: any) => Promise<string>;
|
|
3
|
-
export declare type GeneratorConfiguration = {
|
|
4
|
-
questions: DistinctQuestion<Answers>[];
|
|
5
|
-
answers: Answers;
|
|
6
|
-
errors: Record<string, any>;
|
|
7
|
-
status: number;
|
|
8
|
-
};
|
|
9
|
-
export declare const getConfiguration: (id: string, details?: any) => Promise<GeneratorConfiguration | null>;
|
|
1
|
+
import type { DistinctQuestion } from 'inquirer';
|
|
10
2
|
export declare const getSource: (arg: string) => {
|
|
11
3
|
source: string;
|
|
12
4
|
dsn: string | undefined;
|
|
13
5
|
};
|
|
14
|
-
export declare const getTemplates: () => Promise<string>;
|
|
15
|
-
export declare const askGeneratorQuestions: (id: string, settings: any, state: any) => Promise<any>;
|
|
16
|
-
export declare const askTemplateQuestions: (id: string, settings: any, state: any) => Promise<any>;
|
|
17
6
|
export declare type IntrospectionServiceQuery = {
|
|
18
7
|
operation: string;
|
|
19
8
|
variables: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/generate/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/generate/helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAA;AAU9C,eAAO,MAAM,SAAS,QACf,MAAM;YACD,MAAM;SAAO,MAAM,GAAG,SAAS;CAyB1C,CAAA;AAED,oBAAY,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE;QAAC,CAAC,EAAE,EAAE,MAAM,GAAG;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAA;SAAC,CAAA;KAAC,CAAA;CAC7D,CAAA;AAED,oBAAY,4BAA4B,GAAG;IACzC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,yBAAyB,cACzB,MAAM,SACV,yBAAyB,KAC/B,QAAQ,4BAA4B,CAkFtC,CAAA;AAED,eAAO,MAAM,iBAAiB;UAOtB,MAAM;YACJ,MAAM;;gBAEF,WAAW,GAAG,QAAQ;cACxB,4BAA4B;;;EAqCvC,CAAA;AAED,eAAO,MAAM,gBAAgB,oHAQ5B,CAAA"}
|
package/lib/generate/helpers.js
CHANGED
|
@@ -1,98 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright (c) 2020,2021,2022,2023, StepZen, Inc.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.overrideDefaults = exports.writeSdlAndConfig = exports.queryIntrospectionService = exports.
|
|
4
|
+
exports.overrideDefaults = exports.writeSdlAndConfig = exports.queryIntrospectionService = exports.getSource = void 0;
|
|
5
5
|
const errors_1 = require("@oclif/errors");
|
|
6
|
-
const chalk = require("chalk");
|
|
7
6
|
const debug = require("debug");
|
|
8
7
|
const fetch_1 = require("@stepzen/fetch");
|
|
9
8
|
const fs = require("fs-extra");
|
|
10
|
-
const inquirer = require("../shared/inquirer");
|
|
11
9
|
const lodash_1 = require("lodash");
|
|
12
10
|
const os = require("os");
|
|
13
11
|
const path = require("path");
|
|
14
|
-
const shell = require("shelljs");
|
|
15
12
|
const transpiler = require("@stepzen/transpiler");
|
|
16
13
|
const prettier = require("prettier");
|
|
17
|
-
const constants_1 = require("../shared/constants");
|
|
18
14
|
const errors_2 = require("../shared/errors");
|
|
19
15
|
const utils_1 = require("../shared/utils");
|
|
20
|
-
const { version } = require('../../package.json');
|
|
21
|
-
const createGeneratorFiles = async (id, details) => {
|
|
22
|
-
const url = `${constants_1.STEPZEN_DIRECT_GENERATOR_ENGINES_URL}/create`;
|
|
23
|
-
debug('stepzen:generate')(`calling the generator engine ${id} via ${url}`);
|
|
24
|
-
const engineErrorMessageWrap = (msg) => `An error has occurred when creating the schema: ${msg}. Please check your parameters and try again.`;
|
|
25
|
-
try {
|
|
26
|
-
const response = await (0, fetch_1.default)(url, {
|
|
27
|
-
body: JSON.stringify({
|
|
28
|
-
id,
|
|
29
|
-
details: JSON.stringify(details.answers),
|
|
30
|
-
}),
|
|
31
|
-
headers: {
|
|
32
|
-
'Content-Type': 'application/json',
|
|
33
|
-
'User-Agent': `stepzen-cli/${version}`,
|
|
34
|
-
},
|
|
35
|
-
method: 'POST',
|
|
36
|
-
});
|
|
37
|
-
const responseJson = await response.json();
|
|
38
|
-
if (responseJson.errors) {
|
|
39
|
-
// assuming a response of type { status: Int, errors: String }
|
|
40
|
-
throw new errors_1.CLIError(engineErrorMessageWrap(responseJson.errors));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
// where errors is an error message if name === null.
|
|
44
|
-
const files = responseJson;
|
|
45
|
-
const tmp = path.join(os.tmpdir(), `stepzen-generated-schema-${Date.now()}`);
|
|
46
|
-
fs.ensureDirSync(tmp);
|
|
47
|
-
for (const file of files) {
|
|
48
|
-
if (file.errors) {
|
|
49
|
-
throw new errors_1.CLIError(engineErrorMessageWrap(file.errors));
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
const dir = path.join(tmp, file.name);
|
|
53
|
-
fs.writeFileSync(dir, file.content);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return tmp;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
debug('stepzen:generate')(error);
|
|
61
|
-
throw error instanceof errors_1.CLIError
|
|
62
|
-
? error
|
|
63
|
-
: new errors_1.CLIError(errors_2.PERMANENT_STEPZEN_ERROR);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
exports.createGeneratorFiles = createGeneratorFiles;
|
|
67
|
-
const getConfiguration = async (id, details = {}) => {
|
|
68
|
-
const url = `${constants_1.STEPZEN_DIRECT_GENERATOR_ENGINES_URL}/configure`;
|
|
69
|
-
debug('stepzen:generate')(`calling the generator engine ${id} via ${url}`);
|
|
70
|
-
try {
|
|
71
|
-
const response = await (0, fetch_1.default)(url, {
|
|
72
|
-
body: JSON.stringify({
|
|
73
|
-
id,
|
|
74
|
-
details: JSON.stringify(details),
|
|
75
|
-
}),
|
|
76
|
-
headers: {
|
|
77
|
-
'Content-Type': 'application/json',
|
|
78
|
-
'User-Agent': `stepzen-cli/${version}`,
|
|
79
|
-
},
|
|
80
|
-
method: 'POST',
|
|
81
|
-
});
|
|
82
|
-
const { answers, errors, questions, status } = await response.json();
|
|
83
|
-
return {
|
|
84
|
-
answers: JSON.parse(answers),
|
|
85
|
-
errors: JSON.parse(errors),
|
|
86
|
-
questions: JSON.parse(questions),
|
|
87
|
-
status: JSON.parse(status),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
debug('stepzen:generate')(error);
|
|
92
|
-
throw new errors_1.CLIError(errors_2.PERMANENT_STEPZEN_ERROR);
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
exports.getConfiguration = getConfiguration;
|
|
96
16
|
const getSource = (arg) => {
|
|
97
17
|
const trimmed = arg.trim();
|
|
98
18
|
const hasDsn = trimmed.includes('://');
|
|
@@ -118,74 +38,6 @@ const getSource = (arg) => {
|
|
|
118
38
|
return { source, dsn };
|
|
119
39
|
};
|
|
120
40
|
exports.getSource = getSource;
|
|
121
|
-
const getTemplates = async () => {
|
|
122
|
-
const tmp = path.join(os.tmpdir(), `stepzen-api-templates-${Date.now()}`);
|
|
123
|
-
fs.ensureDirSync(tmp);
|
|
124
|
-
const repository = constants_1.STEPZEN_API_TEMPLATES_REPOSITORY;
|
|
125
|
-
const command = `git clone ${repository} ${tmp}`;
|
|
126
|
-
const result = shell.exec(command, { silent: true });
|
|
127
|
-
if (result.code !== 0) {
|
|
128
|
-
throw new errors_1.CLIError(result.stderr.trim());
|
|
129
|
-
}
|
|
130
|
-
return tmp;
|
|
131
|
-
};
|
|
132
|
-
exports.getTemplates = getTemplates;
|
|
133
|
-
const askGeneratorQuestions = async (id, settings, state) => {
|
|
134
|
-
let status = -1;
|
|
135
|
-
do {
|
|
136
|
-
const questions = settings.questions.map((question) => {
|
|
137
|
-
return {
|
|
138
|
-
type: 'password',
|
|
139
|
-
...question,
|
|
140
|
-
// set the previous iteration's answer as the default value, except for password fields
|
|
141
|
-
default: question.type && question.type !== 'password'
|
|
142
|
-
? (0, lodash_1.get)(state, question.name)
|
|
143
|
-
: undefined,
|
|
144
|
-
};
|
|
145
|
-
});
|
|
146
|
-
// eslint-disable-next-line no-await-in-loop
|
|
147
|
-
const answers = await inquirer.prompt('generator', questions);
|
|
148
|
-
state = (0, lodash_1.merge)(state, answers);
|
|
149
|
-
// eslint-disable-next-line no-await-in-loop
|
|
150
|
-
const result = await (0, exports.getConfiguration)(id, state);
|
|
151
|
-
if (!result) {
|
|
152
|
-
// at this point the generator ${id} should have been validated
|
|
153
|
-
throw new errors_1.CLIError(errors_2.PERMANENT_STEPZEN_ERROR);
|
|
154
|
-
}
|
|
155
|
-
if (result.status === -1 && result.questions.length === 0) {
|
|
156
|
-
console.log();
|
|
157
|
-
console.log(chalk.red(`A problem occurred when running ${id} import${result.errors?.error ? `: "${result.errors?.error}"` : '.'}`));
|
|
158
|
-
console.log('Please try again and check command-line parameters');
|
|
159
|
-
if (questions.length === 0) {
|
|
160
|
-
// all questions are pre-answered, so there is no chance to save the
|
|
161
|
-
// situation interactively => don't loop
|
|
162
|
-
throw new errors_1.CLIError('Unable to import');
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
settings = {
|
|
167
|
-
questions: result.questions,
|
|
168
|
-
};
|
|
169
|
-
// eslint-disable-next-line require-atomic-updates
|
|
170
|
-
state = (0, lodash_1.merge)(state, result.answers);
|
|
171
|
-
}
|
|
172
|
-
status = result.status;
|
|
173
|
-
} while (status === -1);
|
|
174
|
-
return state;
|
|
175
|
-
};
|
|
176
|
-
exports.askGeneratorQuestions = askGeneratorQuestions;
|
|
177
|
-
const askTemplateQuestions = async (id, settings, state) => {
|
|
178
|
-
const questions = settings.questions.map((question) => ({
|
|
179
|
-
type: 'password',
|
|
180
|
-
...question,
|
|
181
|
-
}));
|
|
182
|
-
const answers = await inquirer.prompt('template', questions);
|
|
183
|
-
return {
|
|
184
|
-
...state,
|
|
185
|
-
...answers,
|
|
186
|
-
};
|
|
187
|
-
};
|
|
188
|
-
exports.askTemplateQuestions = askTemplateQuestions;
|
|
189
41
|
const queryIntrospectionService = async (serverUrl, query) => {
|
|
190
42
|
let json;
|
|
191
43
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/generate/helpers.ts"],"names":[],"mappings":";AAAA,mDAAmD;;;AAEnD,0CAAsC;AACtC,+BAA8B;AAC9B
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/generate/helpers.ts"],"names":[],"mappings":";AAAA,mDAAmD;;;AAEnD,0CAAsC;AACtC,+BAA8B;AAC9B,0CAAkC;AAClC,+BAA8B;AAE9B,mCAAqC;AACrC,yBAAwB;AACxB,6BAA4B;AAC5B,kDAAiD;AACjD,qCAAoC;AAEpC,6CAAwD;AACxD,2CAAoD;AAE7C,MAAM,SAAS,GAAG,CACvB,GAAW,EACgC,EAAE;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACtC,IAAI,MAAM,CAAA;IACV,IAAI,GAAG,CAAA;IACP,oDAAoD;IACpD,mDAAmD;IACnD,IAAI,MAAM,EAAE;QACV,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,GAAG,GAAG,OAAO,CAAA;KACd;SAAM;QACL,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClD,MAAM,IAAI,iBAAQ,CAChB,sGAAsG,CACvG,CAAA;SACF;QACD,MAAM,GAAG,OAAO,CAAA;KACjB;IAED,iDAAiD;IACjD,mDAAmD;IACnD,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;QACvC,MAAM,GAAG,YAAY,CAAA;KACtB;IACD,OAAO,EAAC,MAAM,EAAE,GAAG,EAAC,CAAA;AACtB,CAAC,CAAA;AA3BY,QAAA,SAAS,aA2BrB;AAaM,MAAM,yBAAyB,GAAG,KAAK,EAC5C,SAAiB,EACjB,KAAgC,EACO,EAAE;IACzC,IAAI,IAA8B,CAAA;IAClC,IAAI;QACF,KAAK,CAAC,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAA;QACzC,MAAM,WAAW,GAAG;QAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CACnC,CAAC,CAAC,EAAE,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CACpC;;UAEG,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CACvD,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACtB;;;;MAIC,CAAA;QACF,KAAK,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,CAAA;QAC3C,KAAK,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,IAAA,kBAAS,EAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,KAAK,CAAC;SAC1D,CAAC,CAAA;QACF,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC,SAAS,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC;YAC7C,IAAI,EAAE,OAAO;SACd,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,KAAK,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAA;QAEpC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;KACxB;IAAC,OAAO,KAAK,EAAE;QACd,KAAK,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,IAAI,iBAAQ,CAAC,gCAAuB,CAAC,CAAA;KAC5C;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAC9B,KAAK,CAAC,uBAAuB,CAAC,CAC5B,4DAA4D;YAC1D,sCAAsC,CACzC,CAAA;QACD,MAAM,IAAI,iBAAQ,CAAC,gCAAuB,CAAC,CAAA;KAC5C;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,EAAE,CAClC,KAAK,CAAC,OAAO;YACb,uEAAuE;YACvE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,8EAA8E;YAC9E,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO;gBACxB,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACjD,CAAC,CAAC,EAAE,CAAC;YACP,qGAAqG;YACrG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK;gBACtB,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC,CAAA;QACT,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAA;KACzD;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAC/B,KAAK,CAAC,qBAAqB,CAAC,CAC1B,4DAA4D;YAC1D,kBAAkB,KAAK,CAAC,SAAS,WAAW,CAC/C,CAAA;QACD,MAAM,IAAI,iBAAQ,CAAC,gCAAuB,CAAC,CAAA;KAC5C;IAED,MAAM,EAAC,MAAM,EAAE,GAAG,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,kBAAkB,CAAC,CACvB,4DAA4D;YAC1D,gCAAgC,KAAK,CAAC,SAAS,eAAe;YAC9D,KAAK,KAAK,CAAC,SAAS,mBAAmB,CAC1C,CAAA;QACD,MAAM,IAAI,iBAAQ,CAAC,gCAAuB,CAAC,CAAA;KAC5C;IAED,OAAO,EAAC,MAAM,EAAE,GAAG,EAAC,CAAA;AACtB,CAAC,CAAA;AArFY,QAAA,yBAAyB,6BAqFrC;AAEM,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,MAAM,EACN,UAAU,GAAG,KAAK,EAClB,UAAU,EACV,QAAQ,GAOT,EAAE,EAAE;IACH,MAAM,EAAC,MAAM,EAAE,GAAG,EAAC,GAAG,QAAQ,CAAA;IAE9B,kDAAkD;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,yBAAyB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACzE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACrB,8CAA8C;IAC9C,IAAI,MAAM,EAAE;QACV,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAC7B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAC1C,CAAA;KACF;IACD,IAAI,GAAG,EAAE;QACP,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAC/B,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAC1C,CAAA;KACF;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CACnC,MAAM,EACN;QACE,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,GAAG;KACZ,EACD;QACE,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,UAAU;QACV,UAAU;QACV,UAAU,EAAE,MAAM,IAAA,4BAAoB,GAAE;KACzC,CACF,CAAA;IACD,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,CAAA;AAC1B,CAAC,CAAA;AAhDY,QAAA,iBAAiB,qBAgD7B;AAEM,MAAM,gBAAgB,GAAG,CAC9B,SAAsC,EACtC,cAAgC,EACH,EAAE;IAC/B,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAA,YAAG,EAAC,cAAc,EAAE,QAAQ,CAAC,IAAK,CAAC,CAAA;QAC/C,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AARY,QAAA,gBAAgB,oBAQ5B"}
|
package/lib/generate/index.d.ts
CHANGED
|
@@ -3,12 +3,4 @@ export declare type CommonImportOptions = {
|
|
|
3
3
|
source: string;
|
|
4
4
|
onConflict: 'overwrite' | 'append';
|
|
5
5
|
};
|
|
6
|
-
export declare type GenerateOptions = CommonImportOptions & {
|
|
7
|
-
schema: string;
|
|
8
|
-
preAnswered?: {
|
|
9
|
-
[question: string]: string;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
declare const _default: ({ schema, name, onConflict, source, preAnswered, }: GenerateOptions) => Promise<string>;
|
|
13
|
-
export default _default;
|
|
14
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAEA,oBAAY,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,GAAG,QAAQ,CAAA;CACnC,CAAA"}
|
package/lib/generate/index.js
CHANGED
|
@@ -1,104 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright (c) 2020,2021,2022,2023, StepZen, Inc.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const errors_1 = require("@oclif/errors");
|
|
5
|
-
const core_1 = require("@oclif/core");
|
|
6
|
-
const fs = require("fs-extra");
|
|
7
|
-
const lodash_1 = require("lodash");
|
|
8
|
-
const path = require("path");
|
|
9
|
-
const transpiler = require("@stepzen/transpiler");
|
|
10
|
-
const helpers_1 = require("./helpers");
|
|
11
|
-
const utils_1 = require("../shared/utils");
|
|
12
|
-
exports.default = async ({ schema, name, onConflict, source, preAnswered = {}, }) => {
|
|
13
|
-
// Store the generator
|
|
14
|
-
let generator;
|
|
15
|
-
// Initial answers from flags, keyed as <schema>_config
|
|
16
|
-
let answers = {
|
|
17
|
-
[`${schema}_config`]: preAnswered,
|
|
18
|
-
};
|
|
19
|
-
// Start downloading
|
|
20
|
-
core_1.CliUx.ux.action.start('Downloading from StepZen...');
|
|
21
|
-
// Get the generator configuration
|
|
22
|
-
const configure = await (0, helpers_1.getConfiguration)(schema, answers);
|
|
23
|
-
if (configure?.questions?.length ||
|
|
24
|
-
(configure?.status && configure.status >= 0)) {
|
|
25
|
-
generator = {
|
|
26
|
-
questions: configure.questions,
|
|
27
|
-
type: 'generator',
|
|
28
|
-
answers: undefined,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
if (configure?.errors?.error) {
|
|
32
|
-
throw new errors_1.CLIError(configure.errors.error);
|
|
33
|
-
}
|
|
34
|
-
// For housekeeping
|
|
35
|
-
const tempFiles = [];
|
|
36
|
-
const cleanUp = async () => {
|
|
37
|
-
// Silently ignore temporary files that could not be deleted (error message would be
|
|
38
|
-
// useless and allows simpler mocking by not having to actually create files).
|
|
39
|
-
await Promise.all(tempFiles.map(file => fs
|
|
40
|
-
.access(file, fs.constants.W_OK)
|
|
41
|
-
.then(() => fs.remove(file))
|
|
42
|
-
.catch(() => undefined)));
|
|
43
|
-
};
|
|
44
|
-
// Get the API templates repository
|
|
45
|
-
let templates;
|
|
46
|
-
if (generator === undefined) {
|
|
47
|
-
templates = await (0, helpers_1.getTemplates)();
|
|
48
|
-
if (fs.existsSync(`${templates}/${schema}`)) {
|
|
49
|
-
const file = path.join(templates, schema, 'stepzen.config.json');
|
|
50
|
-
const config = fs.readFileSync(file, 'utf8');
|
|
51
|
-
const json = JSON.parse(config);
|
|
52
|
-
generator = {
|
|
53
|
-
questions: json?.config?.questions || [],
|
|
54
|
-
type: 'template',
|
|
55
|
-
answers: undefined,
|
|
56
|
-
};
|
|
57
|
-
tempFiles.push(templates);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Finished downloading
|
|
61
|
-
core_1.CliUx.ux.action.stop();
|
|
62
|
-
console.log();
|
|
63
|
-
let result;
|
|
64
|
-
if (generator === undefined) {
|
|
65
|
-
// If you've tried to import non-existent templates, complain and exit
|
|
66
|
-
cleanUp();
|
|
67
|
-
throw new errors_1.CLIError(`Cannot find the schema ${schema}`);
|
|
68
|
-
}
|
|
69
|
-
else if (generator.type === 'generator') {
|
|
70
|
-
result = await (0, helpers_1.askGeneratorQuestions)(schema, generator, answers);
|
|
71
|
-
}
|
|
72
|
-
else if (generator.type === 'template') {
|
|
73
|
-
result = await (0, helpers_1.askTemplateQuestions)(schema, generator, answers);
|
|
74
|
-
}
|
|
75
|
-
generator.answers = result;
|
|
76
|
-
answers = (0, lodash_1.merge)(answers, result);
|
|
77
|
-
// We now have all the answers! Generate schemas
|
|
78
|
-
console.log();
|
|
79
|
-
core_1.CliUx.ux.action.start('Generating schemas...');
|
|
80
|
-
let files;
|
|
81
|
-
if (generator.type === 'generator') {
|
|
82
|
-
files = await (0, helpers_1.createGeneratorFiles)(schema, generator);
|
|
83
|
-
tempFiles.push(files);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
// if (generator.type === 'template')
|
|
87
|
-
files = path.join(templates, schema);
|
|
88
|
-
}
|
|
89
|
-
const output = await transpiler.merge(source, {
|
|
90
|
-
name: name || schema,
|
|
91
|
-
source: files,
|
|
92
|
-
}, {
|
|
93
|
-
answers,
|
|
94
|
-
silent: true,
|
|
95
|
-
output: null,
|
|
96
|
-
onConflict,
|
|
97
|
-
extensions: await (0, utils_1.getStepZenExtensions)(),
|
|
98
|
-
});
|
|
99
|
-
core_1.CliUx.ux.action.stop();
|
|
100
|
-
// Housekeeping
|
|
101
|
-
cleanUp();
|
|
102
|
-
return output;
|
|
103
|
-
};
|
|
104
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":";AAAA,mDAAmD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":";AAAA,mDAAmD"}
|
|
@@ -1,18 +1,40 @@
|
|
|
1
1
|
import type { CommonImportOptions } from '.';
|
|
2
2
|
import type { MachineConfiguration } from '../shared/types';
|
|
3
|
-
export declare type DBType = 'mysql' | 'postgresql';
|
|
4
|
-
export declare type
|
|
5
|
-
|
|
3
|
+
export declare type DBType = 'mysql' | 'postgresql' | 'snowflake';
|
|
4
|
+
export declare type DBIntrospectionOptions = {
|
|
5
|
+
naming?: '2022' | '2023';
|
|
6
|
+
};
|
|
7
|
+
export declare type CommonSqlImportOptions = CommonImportOptions & {
|
|
8
|
+
dbType: DBType;
|
|
6
9
|
database: string;
|
|
7
10
|
user: string;
|
|
8
11
|
password: string;
|
|
9
12
|
linkTypes?: boolean;
|
|
10
|
-
schema?: string;
|
|
11
13
|
include?: 'tables-only' | 'views-only' | 'tables-and-views';
|
|
14
|
+
introspectionOptions?: DBIntrospectionOptions;
|
|
15
|
+
};
|
|
16
|
+
export declare type MysqlImportOptions = CommonSqlImportOptions & {
|
|
17
|
+
dbType: 'mysql';
|
|
18
|
+
host: string;
|
|
19
|
+
};
|
|
20
|
+
export declare type PostgresqlImportOptions = CommonSqlImportOptions & {
|
|
21
|
+
dbType: 'postgresql';
|
|
22
|
+
host: string;
|
|
23
|
+
schema?: string;
|
|
24
|
+
};
|
|
25
|
+
export declare type SnowflakeImportOptions = CommonSqlImportOptions & {
|
|
26
|
+
dbType: 'snowflake';
|
|
27
|
+
accountId: string;
|
|
28
|
+
warehouse: string;
|
|
29
|
+
schema?: string;
|
|
12
30
|
};
|
|
13
|
-
export declare type
|
|
14
|
-
export declare
|
|
15
|
-
export declare
|
|
31
|
+
export declare type SqlImportOptions = MysqlImportOptions | PostgresqlImportOptions | SnowflakeImportOptions;
|
|
32
|
+
export declare type InteractiveMysqlImportOptions = Pick<MysqlImportOptions, 'host' | 'database' | 'user' | 'password' | 'linkTypes'>;
|
|
33
|
+
export declare type InteractivePostgresqlImportOptions = Pick<PostgresqlImportOptions, 'host' | 'database' | 'schema' | 'user' | 'password' | 'linkTypes'>;
|
|
34
|
+
export declare type InteractiveSnowflakeImportOptions = Pick<SnowflakeImportOptions, 'accountId' | 'database' | 'schema' | 'warehouse' | 'user' | 'password' | 'linkTypes'>;
|
|
35
|
+
export declare type InteractiveImportOptions<T extends DBType> = T extends 'mysql' ? InteractiveMysqlImportOptions : T extends 'postgresql' ? InteractivePostgresqlImportOptions : T extends 'snowflake' ? InteractiveSnowflakeImportOptions : never;
|
|
36
|
+
export declare const askSqlQuestions: <T extends DBType>(dbType: T, defaultAnswers?: Partial<InteractiveImportOptions<T>>) => Promise<InteractiveImportOptions<T>>;
|
|
37
|
+
export declare const sql2sdl: (_: DBType, options: SqlImportOptions, configuration: MachineConfiguration) => Promise<{
|
|
16
38
|
error: string;
|
|
17
39
|
} | {
|
|
18
40
|
outPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql2sdl.d.ts","sourceRoot":"","sources":["../../src/generate/sql2sdl.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,GAAG,CAAA;AAC1C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAA;AAIzD,oBAAY,MAAM,GAAG,OAAO,GAAG,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"sql2sdl.d.ts","sourceRoot":"","sources":["../../src/generate/sql2sdl.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,GAAG,CAAA;AAC1C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAA;AAIzD,oBAAY,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,CAAA;AACzD,oBAAY,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB,CAAA;AAED,oBAAY,sBAAsB,GAAG,mBAAmB,GAAG;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,kBAAkB,CAAA;IAC3D,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;CAC9C,CAAA;AAED,oBAAY,kBAAkB,GAAG,sBAAsB,GAAG;IACxD,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,oBAAY,uBAAuB,GAAG,sBAAsB,GAAG;IAC7D,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oBAAY,sBAAsB,GAAG,sBAAsB,GAAG;IAC5D,MAAM,EAAE,WAAW,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oBAAY,gBAAgB,GACxB,kBAAkB,GAClB,uBAAuB,GACvB,sBAAsB,CAAA;AAE1B,oBAAY,6BAA6B,GAAG,IAAI,CAC9C,kBAAkB,EAClB,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CACxD,CAAA;AAED,oBAAY,kCAAkC,GAAG,IAAI,CACnD,uBAAuB,EACvB,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CACnE,CAAA;AAED,oBAAY,iCAAiC,GAAG,IAAI,CAClD,sBAAsB,EACpB,WAAW,GACX,UAAU,GACV,QAAQ,GACR,WAAW,GACX,MAAM,GACN,UAAU,GACV,WAAW,CACd,CAAA;AAED,oBAAY,wBAAwB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,GACtE,6BAA6B,GAC7B,CAAC,SAAS,YAAY,GACtB,kCAAkC,GAClC,CAAC,SAAS,WAAW,GACrB,iCAAiC,GACjC,KAAK,CAAA;AAET,eAAO,MAAM,eAAe,8HA0E3B,CAAA;AAED,eAAO,MAAM,OAAO,MACf,MAAM,WACA,gBAAgB,iBACV,oBAAoB,KAClC,QAAQ;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAwI7C,CAAA"}
|