@looker/sdk-codegen-scripts 21.4.7 → 21.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/lib/convert.js +0 -10
- package/lib/convert.js.map +1 -1
- package/lib/declarationMiner.js +11 -37
- package/lib/declarationMiner.js.map +1 -1
- package/lib/esm/convert.js +20 -18
- package/lib/esm/convert.js.map +1 -1
- package/lib/esm/declarationMiner.js +32 -41
- package/lib/esm/declarationMiner.js.map +1 -1
- package/lib/esm/exampleMiner.js +52 -77
- package/lib/esm/exampleMiner.js.map +1 -1
- package/lib/esm/fetchSpec.js +65 -83
- package/lib/esm/fetchSpec.js.map +1 -1
- package/lib/esm/index.js +93 -8
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/languages.js +16 -11
- package/lib/esm/languages.js.map +1 -1
- package/lib/esm/legacy.js +8 -9
- package/lib/esm/legacy.js.map +1 -1
- package/lib/esm/legacyGenerator.js +19 -22
- package/lib/esm/legacyGenerator.js.map +1 -1
- package/lib/esm/nodeUtils.js +39 -22
- package/lib/esm/nodeUtils.js.map +1 -1
- package/lib/esm/prettify.js +15 -9
- package/lib/esm/prettify.js.map +1 -1
- package/lib/esm/reformatter.js +53 -102
- package/lib/esm/reformatter.js.map +1 -1
- package/lib/esm/sdkConfig.js +19 -13
- package/lib/esm/sdkConfig.js.map +1 -1
- package/lib/esm/sdkGen.js +43 -59
- package/lib/esm/sdkGen.js.map +1 -1
- package/lib/esm/sdkGenerator.js +34 -47
- package/lib/esm/sdkGenerator.js.map +1 -1
- package/lib/esm/specConvert.js +20 -27
- package/lib/esm/specConvert.js.map +1 -1
- package/lib/esm/testUtils/index.js +28 -0
- package/lib/esm/testUtils/index.js.map +1 -0
- package/lib/esm/testUtils/mocks.js +16 -0
- package/lib/esm/testUtils/mocks.js.map +1 -0
- package/lib/esm/testUtils/testUtils.js +66 -0
- package/lib/esm/testUtils/testUtils.js.map +1 -0
- package/lib/esm/utils.js +43 -60
- package/lib/esm/utils.js.map +1 -1
- package/lib/esm/yamlToJson.js +8 -6
- package/lib/esm/yamlToJson.js.map +1 -1
- package/lib/exampleMiner.js +4 -89
- package/lib/exampleMiner.js.map +1 -1
- package/lib/fetchSpec.js +6 -76
- package/lib/fetchSpec.js.map +1 -1
- package/lib/index.js +0 -16
- package/lib/index.js.map +1 -1
- package/lib/languages.js +0 -11
- package/lib/languages.js.map +1 -1
- package/lib/legacy.js +0 -5
- package/lib/legacy.js.map +1 -1
- package/lib/legacyGenerator.js +0 -15
- package/lib/legacyGenerator.js.map +1 -1
- package/lib/nodeUtils.js +1 -34
- package/lib/nodeUtils.js.map +1 -1
- package/lib/prettify.js +5 -14
- package/lib/prettify.js.map +1 -1
- package/lib/reformatter.js +3 -70
- package/lib/reformatter.js.map +1 -1
- package/lib/sdkConfig.js +0 -16
- package/lib/sdkConfig.js.map +1 -1
- package/lib/sdkGen.js +0 -41
- package/lib/sdkGen.js.map +1 -1
- package/lib/sdkGenerator.js +4 -52
- package/lib/sdkGenerator.js.map +1 -1
- package/lib/specConvert.js +0 -19
- package/lib/specConvert.js.map +1 -1
- package/lib/testUtils/index.js +0 -4
- package/lib/testUtils/index.js.map +1 -1
- package/lib/testUtils/mocks.js +0 -4
- package/lib/testUtils/mocks.js.map +1 -1
- package/lib/testUtils/testUtils.js +1 -17
- package/lib/testUtils/testUtils.js.map +1 -1
- package/lib/utils.js +6 -48
- package/lib/utils.js.map +1 -1
- package/lib/yamlToJson.js +0 -7
- package/lib/yamlToJson.js.map +1 -1
- package/package.json +6 -6
package/lib/fetchSpec.js
CHANGED
|
@@ -3,30 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
6
|
+
exports.swaggerFileName = exports.supportedVersion = exports.specTransport = exports.specPath = exports.openApiFileName = exports.logout = exports.login = exports.logFetchSpec = exports.logConvertSpec = exports.getVersionInfo = exports.getUrl = exports.fetchSpec = exports.fetchLookerVersions = exports.fetchLookerVersion = exports.authGetUrl = void 0;
|
|
8
7
|
var _sdkCodegenUtils = require("@looker/sdk-codegen-utils");
|
|
9
|
-
|
|
10
8
|
var _sdkRtl = require("@looker/sdk-rtl");
|
|
11
|
-
|
|
12
9
|
var _sdkNode = require("@looker/sdk-node");
|
|
13
|
-
|
|
14
10
|
var _nodeUtils = require("./nodeUtils");
|
|
15
|
-
|
|
16
11
|
var _convert = require("./convert");
|
|
17
|
-
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
function
|
|
21
|
-
|
|
22
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
|
-
|
|
12
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
14
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
16
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
24
17
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
25
|
-
|
|
26
18
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
27
|
-
|
|
28
19
|
var transport;
|
|
29
|
-
|
|
30
20
|
var specTransport = props => {
|
|
31
21
|
if (transport) return transport;
|
|
32
22
|
var options = {
|
|
@@ -38,19 +28,14 @@ var specTransport = props => {
|
|
|
38
28
|
transport = new _sdkNode.NodeTransport(options);
|
|
39
29
|
return transport;
|
|
40
30
|
};
|
|
41
|
-
|
|
42
31
|
exports.specTransport = specTransport;
|
|
43
|
-
|
|
44
32
|
var loginUrl = props => "".concat(props.base_url, "/api/").concat(props.api_version, "/login");
|
|
45
|
-
|
|
46
33
|
var logoutUrl = props => "".concat(props.base_url, "/api/").concat(props.api_version, "/logout");
|
|
47
|
-
|
|
48
34
|
var supportedVersion = (version, versions) => {
|
|
49
35
|
if (!('supported_versions' in versions)) {
|
|
50
36
|
(0, _sdkCodegenUtils.danger)('Could not find supported versions');
|
|
51
37
|
return undefined;
|
|
52
38
|
}
|
|
53
|
-
|
|
54
39
|
var found = Object.entries(versions.supported_versions).find(_ref => {
|
|
55
40
|
var [, value] = _ref;
|
|
56
41
|
return value.version === version;
|
|
@@ -58,24 +43,17 @@ var supportedVersion = (version, versions) => {
|
|
|
58
43
|
if (found) return found[1];
|
|
59
44
|
return undefined;
|
|
60
45
|
};
|
|
61
|
-
|
|
62
46
|
exports.supportedVersion = supportedVersion;
|
|
63
47
|
var specPath = 'spec';
|
|
64
48
|
exports.specPath = specPath;
|
|
65
|
-
|
|
66
49
|
var swaggerFileName = (name, specKey) => "".concat(specPath, "/").concat(name, ".").concat(specKey, ".json");
|
|
67
|
-
|
|
68
50
|
exports.swaggerFileName = swaggerFileName;
|
|
69
|
-
|
|
70
51
|
var openApiFileName = (name, specKey) => "".concat(specPath, "/").concat(name, ".").concat(specKey, ".oas.json");
|
|
71
|
-
|
|
72
52
|
exports.openApiFileName = openApiFileName;
|
|
73
|
-
|
|
74
53
|
var badAuth = content => {
|
|
75
54
|
var text = typeof content === 'object' ? JSON.stringify(content) : content;
|
|
76
55
|
return text.indexOf('Requires authentication') > 0;
|
|
77
56
|
};
|
|
78
|
-
|
|
79
57
|
var logout = function () {
|
|
80
58
|
var _ref2 = _asyncToGenerator(function* (props, token) {
|
|
81
59
|
var xp = specTransport(props);
|
|
@@ -85,18 +63,14 @@ var logout = function () {
|
|
|
85
63
|
}
|
|
86
64
|
}));
|
|
87
65
|
});
|
|
88
|
-
|
|
89
66
|
return function logout(_x, _x2) {
|
|
90
67
|
return _ref2.apply(this, arguments);
|
|
91
68
|
};
|
|
92
69
|
}();
|
|
93
|
-
|
|
94
70
|
exports.logout = logout;
|
|
95
|
-
|
|
96
71
|
var login = function () {
|
|
97
72
|
var _ref3 = _asyncToGenerator(function* (props) {
|
|
98
73
|
var _props$client_id, _props$client_secret;
|
|
99
|
-
|
|
100
74
|
var xp = specTransport(props);
|
|
101
75
|
var creds = {
|
|
102
76
|
client_id: (_props$client_id = props.client_id) !== null && _props$client_id !== void 0 ? _props$client_id : process.env.LOOKERSDK_CLIENT_ID,
|
|
@@ -105,7 +79,6 @@ var login = function () {
|
|
|
105
79
|
var url = loginUrl(props);
|
|
106
80
|
var response = yield (0, _sdkRtl.sdkOk)(xp.request('POST', url, creds, undefined, undefined, undefined));
|
|
107
81
|
var accessToken = yield response.access_token;
|
|
108
|
-
|
|
109
82
|
if (accessToken) {
|
|
110
83
|
return accessToken;
|
|
111
84
|
} else {
|
|
@@ -113,56 +86,44 @@ var login = function () {
|
|
|
113
86
|
throw new Error('Access token could not be retrieved.');
|
|
114
87
|
}
|
|
115
88
|
});
|
|
116
|
-
|
|
117
89
|
return function login(_x3) {
|
|
118
90
|
return _ref3.apply(this, arguments);
|
|
119
91
|
};
|
|
120
92
|
}();
|
|
121
|
-
|
|
122
93
|
exports.login = login;
|
|
123
|
-
|
|
124
94
|
var checkCertError = err => {
|
|
125
95
|
if (err.message && err.message.match(/self signed certificate/gi)) {
|
|
126
96
|
(0, _sdkCodegenUtils.warn)("\nNOTE! Certificate validation can be disabled with:\n NODE_TLS_REJECT_UNAUTHORIZED=\"0\" {original command}\n");
|
|
127
97
|
return true;
|
|
128
98
|
}
|
|
129
|
-
|
|
130
99
|
return false;
|
|
131
100
|
};
|
|
132
|
-
|
|
133
101
|
var getUrl = function () {
|
|
134
102
|
var _ref4 = _asyncToGenerator(function* (props, url, options) {
|
|
135
103
|
var ref = new URL(url);
|
|
136
|
-
|
|
137
104
|
if (ref.protocol === 'file:') {
|
|
138
105
|
return (0, _nodeUtils.readFileSync)(ref.pathname);
|
|
139
106
|
}
|
|
140
|
-
|
|
141
107
|
var xp = specTransport(props);
|
|
142
108
|
return yield (0, _sdkRtl.sdkOk)(xp.request('GET', url, undefined, undefined, undefined, options));
|
|
143
109
|
});
|
|
144
|
-
|
|
145
110
|
return function getUrl(_x4, _x5, _x6) {
|
|
146
111
|
return _ref4.apply(this, arguments);
|
|
147
112
|
};
|
|
148
113
|
}();
|
|
149
|
-
|
|
150
114
|
exports.getUrl = getUrl;
|
|
151
|
-
|
|
152
115
|
var authGetUrl = function () {
|
|
153
116
|
var _ref5 = _asyncToGenerator(function* (props, url) {
|
|
154
117
|
var failQuits = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
155
118
|
var options = arguments.length > 3 ? arguments[3] : undefined;
|
|
156
119
|
var token = null;
|
|
157
120
|
var content = null;
|
|
158
|
-
|
|
159
121
|
try {
|
|
160
122
|
content = yield getUrl(props, url, options);
|
|
161
123
|
} catch (err) {
|
|
162
124
|
if (err.message.indexOf('ETIMEDOUT') > 0) {
|
|
163
125
|
throw err;
|
|
164
126
|
}
|
|
165
|
-
|
|
166
127
|
token = yield login(props);
|
|
167
128
|
options = _objectSpread({
|
|
168
129
|
options
|
|
@@ -172,44 +133,34 @@ var authGetUrl = function () {
|
|
|
172
133
|
}
|
|
173
134
|
});
|
|
174
135
|
content = yield getUrl(props, url, options);
|
|
175
|
-
|
|
176
136
|
if (token) {
|
|
177
137
|
yield logout(props, token);
|
|
178
138
|
}
|
|
179
139
|
}
|
|
180
|
-
|
|
181
140
|
if (badAuth(content)) {
|
|
182
141
|
var authFailed = 'Authentication failed';
|
|
183
|
-
|
|
184
142
|
if (failQuits) {
|
|
185
143
|
return (0, _nodeUtils.quit)(authFailed);
|
|
186
144
|
} else {
|
|
187
145
|
throw new Error(authFailed);
|
|
188
146
|
}
|
|
189
147
|
}
|
|
190
|
-
|
|
191
148
|
return content;
|
|
192
149
|
});
|
|
193
|
-
|
|
194
150
|
return function authGetUrl(_x7, _x8) {
|
|
195
151
|
return _ref5.apply(this, arguments);
|
|
196
152
|
};
|
|
197
153
|
}();
|
|
198
|
-
|
|
199
154
|
exports.authGetUrl = authGetUrl;
|
|
200
|
-
|
|
201
155
|
var fetchLookerVersions = function () {
|
|
202
156
|
var _ref6 = _asyncToGenerator(function* (props, options) {
|
|
203
157
|
return yield authGetUrl(props, "".concat(props.base_url, "/versions"), false, options);
|
|
204
158
|
});
|
|
205
|
-
|
|
206
159
|
return function fetchLookerVersions(_x9, _x10) {
|
|
207
160
|
return _ref6.apply(this, arguments);
|
|
208
161
|
};
|
|
209
162
|
}();
|
|
210
|
-
|
|
211
163
|
exports.fetchLookerVersions = fetchLookerVersions;
|
|
212
|
-
|
|
213
164
|
var fetchLookerVersion = function () {
|
|
214
165
|
var _ref7 = _asyncToGenerator(function* (props, versions, options) {
|
|
215
166
|
if (!versions) {
|
|
@@ -220,23 +171,18 @@ var fetchLookerVersion = function () {
|
|
|
220
171
|
return '';
|
|
221
172
|
}
|
|
222
173
|
}
|
|
223
|
-
|
|
224
174
|
var matches = versions.looker_release_version.match(/^\d+\.\d+/i);
|
|
225
175
|
return matches[0];
|
|
226
176
|
});
|
|
227
|
-
|
|
228
177
|
return function fetchLookerVersion(_x11, _x12, _x13) {
|
|
229
178
|
return _ref7.apply(this, arguments);
|
|
230
179
|
};
|
|
231
180
|
}();
|
|
232
|
-
|
|
233
181
|
exports.fetchLookerVersion = fetchLookerVersion;
|
|
234
|
-
|
|
235
182
|
var fetchSpec = function () {
|
|
236
183
|
var _ref8 = _asyncToGenerator(function* (name, spec, props) {
|
|
237
184
|
var fileName = swaggerFileName(name, spec.key);
|
|
238
185
|
if ((0, _nodeUtils.isFileSync)(fileName)) return fileName;
|
|
239
|
-
|
|
240
186
|
try {
|
|
241
187
|
var content = yield authGetUrl(props, spec.specURL || 'missing spec url');
|
|
242
188
|
(0, _nodeUtils.createJsonFile)(fileName, content);
|
|
@@ -246,32 +192,24 @@ var fetchSpec = function () {
|
|
|
246
192
|
return (0, _nodeUtils.quit)(err);
|
|
247
193
|
}
|
|
248
194
|
});
|
|
249
|
-
|
|
250
195
|
return function fetchSpec(_x14, _x15, _x16) {
|
|
251
196
|
return _ref8.apply(this, arguments);
|
|
252
197
|
};
|
|
253
198
|
}();
|
|
254
|
-
|
|
255
199
|
exports.fetchSpec = fetchSpec;
|
|
256
|
-
|
|
257
200
|
var logFetchSpec = function () {
|
|
258
201
|
var _ref9 = _asyncToGenerator(function* (name, spec, props) {
|
|
259
202
|
var specFile = yield fetchSpec(name, spec, props);
|
|
260
|
-
|
|
261
203
|
if (!specFile) {
|
|
262
204
|
return (0, _nodeUtils.fail)('fetchSpec', 'No specification file name returned');
|
|
263
205
|
}
|
|
264
|
-
|
|
265
206
|
return specFile;
|
|
266
207
|
});
|
|
267
|
-
|
|
268
208
|
return function logFetchSpec(_x17, _x18, _x19) {
|
|
269
209
|
return _ref9.apply(this, arguments);
|
|
270
210
|
};
|
|
271
211
|
}();
|
|
272
|
-
|
|
273
212
|
exports.logFetchSpec = logFetchSpec;
|
|
274
|
-
|
|
275
213
|
var getVersionInfo = function () {
|
|
276
214
|
var _ref10 = _asyncToGenerator(function* (props) {
|
|
277
215
|
try {
|
|
@@ -292,17 +230,13 @@ var getVersionInfo = function () {
|
|
|
292
230
|
e
|
|
293
231
|
});
|
|
294
232
|
}
|
|
295
|
-
|
|
296
233
|
return undefined;
|
|
297
234
|
});
|
|
298
|
-
|
|
299
235
|
return function getVersionInfo(_x20) {
|
|
300
236
|
return _ref10.apply(this, arguments);
|
|
301
237
|
};
|
|
302
238
|
}();
|
|
303
|
-
|
|
304
239
|
exports.getVersionInfo = getVersionInfo;
|
|
305
|
-
|
|
306
240
|
var logConvertSpec = function () {
|
|
307
241
|
var _ref11 = _asyncToGenerator(function* (name, spec, props) {
|
|
308
242
|
var force = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
@@ -311,18 +245,14 @@ var logConvertSpec = function () {
|
|
|
311
245
|
if ((0, _nodeUtils.isFileSync)(oaFile) && !force) return oaFile;
|
|
312
246
|
var specFile = yield logFetchSpec(name, spec, props);
|
|
313
247
|
result = (0, _convert.convertSpec)(specFile, oaFile, force);
|
|
314
|
-
|
|
315
248
|
if (!result) {
|
|
316
249
|
return (0, _nodeUtils.fail)('logConvert', 'No file name returned for openAPI upgrade');
|
|
317
250
|
}
|
|
318
|
-
|
|
319
251
|
return result;
|
|
320
252
|
});
|
|
321
|
-
|
|
322
253
|
return function logConvertSpec(_x21, _x22, _x23) {
|
|
323
254
|
return _ref11.apply(this, arguments);
|
|
324
255
|
};
|
|
325
256
|
}();
|
|
326
|
-
|
|
327
257
|
exports.logConvertSpec = logConvertSpec;
|
|
328
258
|
//# sourceMappingURL=fetchSpec.js.map
|
package/lib/fetchSpec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fetchSpec.ts"],"names":["transport","specTransport","props","options","agentTag","base_url","timeout","defaultTimeout","verify_ssl","NodeTransport","loginUrl","api_version","logoutUrl","supportedVersion","version","versions","undefined","found","Object","entries","supported_versions","find","value","specPath","swaggerFileName","name","specKey","openApiFileName","badAuth","content","text","JSON","stringify","indexOf","logout","token","xp","request","headers","Authorization","login","creds","client_id","process","env","LOOKERSDK_CLIENT_ID","client_secret","LOOKERSDK_CLIENT_SECRET","url","response","accessToken","access_token","Error","checkCertError","err","message","match","getUrl","ref","URL","protocol","pathname","authGetUrl","failQuits","authFailed","fetchLookerVersions","fetchLookerVersion","e","matches","looker_release_version","fetchSpec","spec","fileName","key","specURL","logFetchSpec","specFile","getVersionInfo","lookerVersion","isDefault","status","console","error","logConvertSpec","force","result","oaFile"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport { danger, log, warn } from '@looker/sdk-codegen-utils'\nimport type { IVersionInfo, SpecItem } from '@looker/sdk-codegen'\nimport type { ITransportSettings } from '@looker/sdk-rtl'\nimport { defaultTimeout, sdkOk } from '@looker/sdk-rtl'\nimport { NodeTransport } from '@looker/sdk-node'\nimport {\n fail,\n quit,\n isFileSync,\n readFileSync,\n createJsonFile,\n} from './nodeUtils'\nimport type { ISDKConfigProps } from './sdkConfig'\nimport { convertSpec } from './convert'\n\nlet transport: NodeTransport\n\n/**\n * Customize request transport properties for SDK codegen\n * @param props SDK configuration properties\n * @returns {NodeTransport} codegen-specific overrides\n * @constructor\n */\nexport const specTransport = (props: ISDKConfigProps) => {\n if (transport) return transport\n const options: ITransportSettings = {\n agentTag: 'SDK Codegen',\n base_url: props.base_url,\n timeout: (props as unknown as any).timeout || defaultTimeout,\n verify_ssl: props.verify_ssl,\n }\n transport = new NodeTransport(options)\n return transport\n}\n\nconst loginUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/login`\n\nconst logoutUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/logout`\n\nexport const supportedVersion = (version: string, versions: any) => {\n if (!('supported_versions' in versions)) {\n danger('Could not find supported versions')\n return undefined\n }\n const found = Object.entries(versions.supported_versions).find(\n ([, value]) => (value as any).version === version\n )\n if (found) return found[1]\n return undefined\n}\n\nexport const specPath = 'spec'\n\nexport const swaggerFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.json`\n\nexport const openApiFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.oas.json`\n\n/**\n * Is there an authentication error?\n * @param content response to check\n * @returns True if there's an authentication error\n */\nconst badAuth = (content: string | Record<string, unknown>) => {\n const text = typeof content === 'object' ? JSON.stringify(content) : content\n return text.indexOf('Requires authentication') > 0\n}\n\nexport const logout = async (props: ISDKConfigProps, token: string) => {\n const xp = specTransport(props)\n\n return sdkOk<string, Error>(\n xp.request<string, Error>(\n 'DELETE',\n logoutUrl(props),\n undefined,\n undefined,\n undefined,\n { headers: { Authorization: `Bearer ${token}` } }\n )\n )\n}\n\nexport const login = async (props: ISDKConfigProps) => {\n const xp = specTransport(props)\n const creds = {\n client_id: props.client_id ?? process.env.LOOKERSDK_CLIENT_ID,\n client_secret: props.client_secret ?? process.env.LOOKERSDK_CLIENT_SECRET,\n }\n const url = loginUrl(props)\n\n const response = await sdkOk<any, Error>(\n xp.request<any, Error>('POST', url, creds, undefined, undefined, undefined)\n )\n const accessToken = await response.access_token\n\n if (accessToken) {\n return accessToken\n } else {\n log(`Server Response: ${JSON.stringify(response)}`)\n throw new Error('Access token could not be retrieved.')\n }\n}\n\nconst checkCertError = (err: Error): boolean => {\n if (err.message && err.message.match(/self signed certificate/gi)) {\n warn(`\nNOTE! Certificate validation can be disabled with:\n NODE_TLS_REJECT_UNAUTHORIZED=\"0\" {original command}\n`)\n return true\n }\n return false\n}\n\n/**\n * gets either an http(s) url, or a file URL by reading directly if it's a file url\n * @param props SDK configuration props\n * @param url to fetch\n * @param options for transport call\n */\nexport const getUrl = async (\n props: ISDKConfigProps,\n url: string,\n options?: Partial<ITransportSettings>\n) => {\n const ref = new URL(url)\n\n if (ref.protocol === 'file:') {\n return readFileSync(ref.pathname)\n }\n const xp = specTransport(props)\n return await sdkOk<string, Error>(\n xp.request('GET', url, undefined, undefined, undefined, options)\n )\n}\n\nexport const authGetUrl = async (\n props: ISDKConfigProps,\n url: string,\n failQuits = true,\n options?: Partial<ITransportSettings>\n) => {\n let token = null\n let content: any = null\n try {\n // Try first without login. Most Looker instances don't require auth for spec retrieval\n content = await getUrl(props, url, options)\n } catch (err: any) {\n if (err.message.indexOf('ETIMEDOUT') > 0) {\n throw err\n }\n // Whoops! Ok, try again with login\n token = await login(props)\n options = { options, ...{ headers: { Authorization: `Bearer ${token}` } } }\n content = await getUrl(props, url, options)\n if (token) {\n await logout(props, token)\n }\n }\n\n if (badAuth(content)) {\n const authFailed = 'Authentication failed'\n if (failQuits) {\n return quit(authFailed)\n } else {\n throw new Error(authFailed)\n }\n }\n return content\n}\n\nexport const fetchLookerVersions = async (\n props: ISDKConfigProps,\n options?: Partial<ITransportSettings>\n) => {\n return await authGetUrl(props, `${props.base_url}/versions`, false, options)\n}\n\nexport const fetchLookerVersion = async (\n props: ISDKConfigProps,\n versions?: any,\n options?: Partial<ITransportSettings>\n) => {\n if (!versions) {\n try {\n versions = await fetchLookerVersions(props, options)\n } catch (e: any) {\n warn(\n `Could not retrieve looker release version from \"${props.base_url}/versions\": ${e.message}`\n )\n return ''\n }\n }\n const matches = versions.looker_release_version.match(/^\\d+\\.\\d+/i)\n return matches[0]\n}\n\nexport const fetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const fileName = swaggerFileName(name, spec.key)\n // No need to fetch if the file already exists\n // TODO make this a switch or remove caching?\n if (isFileSync(fileName)) return fileName\n\n try {\n const content = await authGetUrl(props, spec.specURL || 'missing spec url')\n\n createJsonFile(fileName, content)\n\n return fileName\n } catch (err: any) {\n checkCertError(err)\n return quit(err)\n }\n}\n\nexport const logFetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const specFile = await fetchSpec(name, spec, props)\n if (!specFile) {\n return fail('fetchSpec', 'No specification file name returned')\n }\n return specFile\n}\n\nexport const getVersionInfo = async (\n props: ISDKConfigProps\n): Promise<IVersionInfo | undefined> => {\n try {\n const lookerVersion = await fetchLookerVersion(props)\n return {\n spec: {\n key: props.api_version,\n version: props.api_version,\n isDefault: false,\n status: 'mocked',\n },\n lookerVersion,\n }\n } catch (e: any) {\n warn(\n `Could not retrieve version information. Is ${props.base_url} running?`\n )\n checkCertError(e)\n console.error({ e })\n }\n return undefined\n}\n\n/**\n * Fetch (if needed) and convert a Swagger API specification to OpenAPI\n * @param name base name of the target file\n * @param spec specification derived\n * @param props SDK configuration properties to use\n * @param force true to force re-conversion of the spec\n * @returns {Promise<string>} name of converted OpenAPI file\n */\nexport const logConvertSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps,\n force = false\n) => {\n // if openApiFile is resolved correctly, this value will be the file name\n let result = ''\n const oaFile = openApiFileName(name, spec.key)\n if (isFileSync(oaFile) && !force) return oaFile\n\n const specFile = await logFetchSpec(name, spec, props)\n result = convertSpec(specFile, oaFile, force)\n if (!result) {\n return fail('logConvert', 'No file name returned for openAPI upgrade')\n }\n\n return result\n}\n"],"file":"fetchSpec.js"}
|
|
1
|
+
{"version":3,"file":"fetchSpec.js","names":["transport","specTransport","props","options","agentTag","base_url","timeout","defaultTimeout","verify_ssl","NodeTransport","loginUrl","api_version","logoutUrl","supportedVersion","version","versions","danger","undefined","found","Object","entries","supported_versions","find","value","specPath","swaggerFileName","name","specKey","openApiFileName","badAuth","content","text","JSON","stringify","indexOf","logout","token","xp","sdkOk","request","headers","Authorization","login","creds","client_id","process","env","LOOKERSDK_CLIENT_ID","client_secret","LOOKERSDK_CLIENT_SECRET","url","response","accessToken","access_token","log","Error","checkCertError","err","message","match","warn","getUrl","ref","URL","protocol","readFileSync","pathname","authGetUrl","failQuits","authFailed","quit","fetchLookerVersions","fetchLookerVersion","e","matches","looker_release_version","fetchSpec","spec","fileName","key","isFileSync","specURL","createJsonFile","logFetchSpec","specFile","fail","getVersionInfo","lookerVersion","isDefault","status","console","error","logConvertSpec","force","result","oaFile","convertSpec"],"sources":["../src/fetchSpec.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport { danger, log, warn } from '@looker/sdk-codegen-utils'\nimport type { IVersionInfo, SpecItem } from '@looker/sdk-codegen'\nimport type { ITransportSettings } from '@looker/sdk-rtl'\nimport { defaultTimeout, sdkOk } from '@looker/sdk-rtl'\nimport { NodeTransport } from '@looker/sdk-node'\nimport {\n fail,\n quit,\n isFileSync,\n readFileSync,\n createJsonFile,\n} from './nodeUtils'\nimport type { ISDKConfigProps } from './sdkConfig'\nimport { convertSpec } from './convert'\n\nlet transport: NodeTransport\n\n/**\n * Customize request transport properties for SDK codegen\n * @param props SDK configuration properties\n * @returns {NodeTransport} codegen-specific overrides\n * @constructor\n */\nexport const specTransport = (props: ISDKConfigProps) => {\n if (transport) return transport\n const options: ITransportSettings = {\n agentTag: 'SDK Codegen',\n base_url: props.base_url,\n timeout: (props as unknown as any).timeout || defaultTimeout,\n verify_ssl: props.verify_ssl,\n }\n transport = new NodeTransport(options)\n return transport\n}\n\nconst loginUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/login`\n\nconst logoutUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/logout`\n\nexport const supportedVersion = (version: string, versions: any) => {\n if (!('supported_versions' in versions)) {\n danger('Could not find supported versions')\n return undefined\n }\n const found = Object.entries(versions.supported_versions).find(\n ([, value]) => (value as any).version === version\n )\n if (found) return found[1]\n return undefined\n}\n\nexport const specPath = 'spec'\n\nexport const swaggerFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.json`\n\nexport const openApiFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.oas.json`\n\n/**\n * Is there an authentication error?\n * @param content response to check\n * @returns True if there's an authentication error\n */\nconst badAuth = (content: string | Record<string, unknown>) => {\n const text = typeof content === 'object' ? JSON.stringify(content) : content\n return text.indexOf('Requires authentication') > 0\n}\n\nexport const logout = async (props: ISDKConfigProps, token: string) => {\n const xp = specTransport(props)\n\n return sdkOk<string, Error>(\n xp.request<string, Error>(\n 'DELETE',\n logoutUrl(props),\n undefined,\n undefined,\n undefined,\n { headers: { Authorization: `Bearer ${token}` } }\n )\n )\n}\n\nexport const login = async (props: ISDKConfigProps) => {\n const xp = specTransport(props)\n const creds = {\n client_id: props.client_id ?? process.env.LOOKERSDK_CLIENT_ID,\n client_secret: props.client_secret ?? process.env.LOOKERSDK_CLIENT_SECRET,\n }\n const url = loginUrl(props)\n\n const response = await sdkOk<any, Error>(\n xp.request<any, Error>('POST', url, creds, undefined, undefined, undefined)\n )\n const accessToken = await response.access_token\n\n if (accessToken) {\n return accessToken\n } else {\n log(`Server Response: ${JSON.stringify(response)}`)\n throw new Error('Access token could not be retrieved.')\n }\n}\n\nconst checkCertError = (err: Error): boolean => {\n if (err.message && err.message.match(/self signed certificate/gi)) {\n warn(`\nNOTE! Certificate validation can be disabled with:\n NODE_TLS_REJECT_UNAUTHORIZED=\"0\" {original command}\n`)\n return true\n }\n return false\n}\n\n/**\n * gets either an http(s) url, or a file URL by reading directly if it's a file url\n * @param props SDK configuration props\n * @param url to fetch\n * @param options for transport call\n */\nexport const getUrl = async (\n props: ISDKConfigProps,\n url: string,\n options?: Partial<ITransportSettings>\n) => {\n const ref = new URL(url)\n\n if (ref.protocol === 'file:') {\n return readFileSync(ref.pathname)\n }\n const xp = specTransport(props)\n return await sdkOk<string, Error>(\n xp.request('GET', url, undefined, undefined, undefined, options)\n )\n}\n\nexport const authGetUrl = async (\n props: ISDKConfigProps,\n url: string,\n failQuits = true,\n options?: Partial<ITransportSettings>\n) => {\n let token = null\n let content: any = null\n try {\n // Try first without login. Most Looker instances don't require auth for spec retrieval\n content = await getUrl(props, url, options)\n } catch (err: any) {\n if (err.message.indexOf('ETIMEDOUT') > 0) {\n throw err\n }\n // Whoops! Ok, try again with login\n token = await login(props)\n options = { options, ...{ headers: { Authorization: `Bearer ${token}` } } }\n content = await getUrl(props, url, options)\n if (token) {\n await logout(props, token)\n }\n }\n\n if (badAuth(content)) {\n const authFailed = 'Authentication failed'\n if (failQuits) {\n return quit(authFailed)\n } else {\n throw new Error(authFailed)\n }\n }\n return content\n}\n\nexport const fetchLookerVersions = async (\n props: ISDKConfigProps,\n options?: Partial<ITransportSettings>\n) => {\n return await authGetUrl(props, `${props.base_url}/versions`, false, options)\n}\n\nexport const fetchLookerVersion = async (\n props: ISDKConfigProps,\n versions?: any,\n options?: Partial<ITransportSettings>\n) => {\n if (!versions) {\n try {\n versions = await fetchLookerVersions(props, options)\n } catch (e: any) {\n warn(\n `Could not retrieve looker release version from \"${props.base_url}/versions\": ${e.message}`\n )\n return ''\n }\n }\n const matches = versions.looker_release_version.match(/^\\d+\\.\\d+/i)\n return matches[0]\n}\n\nexport const fetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const fileName = swaggerFileName(name, spec.key)\n // No need to fetch if the file already exists\n // TODO make this a switch or remove caching?\n if (isFileSync(fileName)) return fileName\n\n try {\n const content = await authGetUrl(props, spec.specURL || 'missing spec url')\n\n createJsonFile(fileName, content)\n\n return fileName\n } catch (err: any) {\n checkCertError(err)\n return quit(err)\n }\n}\n\nexport const logFetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const specFile = await fetchSpec(name, spec, props)\n if (!specFile) {\n return fail('fetchSpec', 'No specification file name returned')\n }\n return specFile\n}\n\nexport const getVersionInfo = async (\n props: ISDKConfigProps\n): Promise<IVersionInfo | undefined> => {\n try {\n const lookerVersion = await fetchLookerVersion(props)\n return {\n spec: {\n key: props.api_version,\n version: props.api_version,\n isDefault: false,\n status: 'mocked',\n },\n lookerVersion,\n }\n } catch (e: any) {\n warn(\n `Could not retrieve version information. Is ${props.base_url} running?`\n )\n checkCertError(e)\n console.error({ e })\n }\n return undefined\n}\n\n/**\n * Fetch (if needed) and convert a Swagger API specification to OpenAPI\n * @param name base name of the target file\n * @param spec specification derived\n * @param props SDK configuration properties to use\n * @param force true to force re-conversion of the spec\n * @returns {Promise<string>} name of converted OpenAPI file\n */\nexport const logConvertSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps,\n force = false\n) => {\n // if openApiFile is resolved correctly, this value will be the file name\n let result = ''\n const oaFile = openApiFileName(name, spec.key)\n if (isFileSync(oaFile) && !force) return oaFile\n\n const specFile = await logFetchSpec(name, spec, props)\n result = convertSpec(specFile, oaFile, force)\n if (!result) {\n return fail('logConvert', 'No file name returned for openAPI upgrade')\n }\n\n return result\n}\n"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _convert = require("./convert");
|
|
8
|
-
|
|
9
7
|
Object.keys(_convert).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _convert[key]) return;
|
|
@@ -16,9 +14,7 @@ Object.keys(_convert).forEach(function (key) {
|
|
|
16
14
|
}
|
|
17
15
|
});
|
|
18
16
|
});
|
|
19
|
-
|
|
20
17
|
var _fetchSpec = require("./fetchSpec");
|
|
21
|
-
|
|
22
18
|
Object.keys(_fetchSpec).forEach(function (key) {
|
|
23
19
|
if (key === "default" || key === "__esModule") return;
|
|
24
20
|
if (key in exports && exports[key] === _fetchSpec[key]) return;
|
|
@@ -29,9 +25,7 @@ Object.keys(_fetchSpec).forEach(function (key) {
|
|
|
29
25
|
}
|
|
30
26
|
});
|
|
31
27
|
});
|
|
32
|
-
|
|
33
28
|
var _languages = require("./languages");
|
|
34
|
-
|
|
35
29
|
Object.keys(_languages).forEach(function (key) {
|
|
36
30
|
if (key === "default" || key === "__esModule") return;
|
|
37
31
|
if (key in exports && exports[key] === _languages[key]) return;
|
|
@@ -42,9 +36,7 @@ Object.keys(_languages).forEach(function (key) {
|
|
|
42
36
|
}
|
|
43
37
|
});
|
|
44
38
|
});
|
|
45
|
-
|
|
46
39
|
var _nodeUtils = require("./nodeUtils");
|
|
47
|
-
|
|
48
40
|
Object.keys(_nodeUtils).forEach(function (key) {
|
|
49
41
|
if (key === "default" || key === "__esModule") return;
|
|
50
42
|
if (key in exports && exports[key] === _nodeUtils[key]) return;
|
|
@@ -55,9 +47,7 @@ Object.keys(_nodeUtils).forEach(function (key) {
|
|
|
55
47
|
}
|
|
56
48
|
});
|
|
57
49
|
});
|
|
58
|
-
|
|
59
50
|
var _reformatter = require("./reformatter");
|
|
60
|
-
|
|
61
51
|
Object.keys(_reformatter).forEach(function (key) {
|
|
62
52
|
if (key === "default" || key === "__esModule") return;
|
|
63
53
|
if (key in exports && exports[key] === _reformatter[key]) return;
|
|
@@ -68,9 +58,7 @@ Object.keys(_reformatter).forEach(function (key) {
|
|
|
68
58
|
}
|
|
69
59
|
});
|
|
70
60
|
});
|
|
71
|
-
|
|
72
61
|
var _sdkConfig = require("./sdkConfig");
|
|
73
|
-
|
|
74
62
|
Object.keys(_sdkConfig).forEach(function (key) {
|
|
75
63
|
if (key === "default" || key === "__esModule") return;
|
|
76
64
|
if (key in exports && exports[key] === _sdkConfig[key]) return;
|
|
@@ -81,9 +69,7 @@ Object.keys(_sdkConfig).forEach(function (key) {
|
|
|
81
69
|
}
|
|
82
70
|
});
|
|
83
71
|
});
|
|
84
|
-
|
|
85
72
|
var _sdkGenerator = require("./sdkGenerator");
|
|
86
|
-
|
|
87
73
|
Object.keys(_sdkGenerator).forEach(function (key) {
|
|
88
74
|
if (key === "default" || key === "__esModule") return;
|
|
89
75
|
if (key in exports && exports[key] === _sdkGenerator[key]) return;
|
|
@@ -94,9 +80,7 @@ Object.keys(_sdkGenerator).forEach(function (key) {
|
|
|
94
80
|
}
|
|
95
81
|
});
|
|
96
82
|
});
|
|
97
|
-
|
|
98
83
|
var _prettify = require("./prettify");
|
|
99
|
-
|
|
100
84
|
Object.keys(_prettify).forEach(function (key) {
|
|
101
85
|
if (key === "default" || key === "__esModule") return;
|
|
102
86
|
if (key in exports && exports[key] === _prettify[key]) return;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './convert'\nexport * from './fetchSpec'\nexport * from './languages'\nexport * from './nodeUtils'\nexport * from './reformatter'\nexport * from './sdkConfig'\nexport * from './sdkGenerator'\nexport * from './prettify'\n"],"mappings":";;;;;AA0BA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
package/lib/languages.js
CHANGED
|
@@ -4,37 +4,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getGenerator = void 0;
|
|
7
|
-
|
|
8
7
|
var _config = _interopRequireDefault(require("config"));
|
|
9
|
-
|
|
10
8
|
var _sdkCodegen = require("@looker/sdk-codegen");
|
|
11
|
-
|
|
12
9
|
var _nodeUtils = require("./nodeUtils");
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
var getGenerator = (language, api, versions) => {
|
|
17
12
|
var gen = (0, _sdkCodegen.getCodeGenerator)(language, api, versions);
|
|
18
|
-
|
|
19
13
|
if (!gen) {
|
|
20
14
|
var langs = _sdkCodegen.codeGenerators.map(item => item.language);
|
|
21
|
-
|
|
22
15
|
(0, _nodeUtils.quit)("\"".concat(language, "\" is not a recognized language. Supported languages are: all, ").concat(langs.join(', ')));
|
|
23
16
|
return undefined;
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
if (_config.default.has(language)) {
|
|
27
19
|
var overrides = _config.default.get(language);
|
|
28
|
-
|
|
29
20
|
Object.keys(overrides).forEach(key => {
|
|
30
21
|
if (key in gen) {
|
|
31
22
|
gen[key] = overrides[key];
|
|
32
23
|
}
|
|
33
24
|
});
|
|
34
25
|
}
|
|
35
|
-
|
|
36
26
|
return gen;
|
|
37
27
|
};
|
|
38
|
-
|
|
39
28
|
exports.getGenerator = getGenerator;
|
|
40
29
|
//# sourceMappingURL=languages.js.map
|
package/lib/languages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"languages.js","names":["getGenerator","language","api","versions","gen","getCodeGenerator","langs","codeGenerators","map","item","quit","join","undefined","config","has","overrides","get","Object","keys","forEach","key"],"sources":["../src/languages.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport config from 'config'\nimport type { ApiModel, ICodeGen, IVersionInfo } from '@looker/sdk-codegen'\nimport { codeGenerators, getCodeGenerator } from '@looker/sdk-codegen'\nimport { quit } from './nodeUtils'\n\n/**\n * constructs a language generator by name\n *\n * CodeGenerator settings can be overridden by creating a config file and adding an entry for the desired language\n *\n * See the `config` folder in this package for more sample config files\n *\n * @param language name or alias of code language to generate\n * @param api API specification\n * @param versions version info to use for stamping the agentTag\n * @returns either an ICodeGen implementation or undefined\n */\nexport const getGenerator = (\n language: string,\n api: ApiModel,\n versions?: IVersionInfo\n): ICodeGen | undefined => {\n const gen = getCodeGenerator(language, api, versions)\n if (!gen) {\n const langs = codeGenerators.map((item) => item.language)\n quit(\n `\"${language}\" is not a recognized language. Supported languages are: all, ${langs.join(\n ', '\n )}`\n )\n // TS doesn't know quit() exits the program\n return undefined\n }\n\n if (config.has(language)) {\n const overrides = config.get<ICodeGen>(language)\n // Spread operator loses class functions\n // gen = { ...gen, ...overrides }\n Object.keys(overrides).forEach((key) => {\n if (key in gen) {\n gen[key] = overrides[key]\n }\n })\n }\n return gen\n}\n"],"mappings":";;;;;;AA0BA;AAEA;AACA;AAAkC;AAc3B,IAAMA,YAAY,GAAG,CAC1BC,QAAgB,EAChBC,GAAa,EACbC,QAAuB,KACE;EACzB,IAAMC,GAAG,GAAG,IAAAC,4BAAgB,EAACJ,QAAQ,EAAEC,GAAG,EAAEC,QAAQ,CAAC;EACrD,IAAI,CAACC,GAAG,EAAE;IACR,IAAME,KAAK,GAAGC,0BAAc,CAACC,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACR,QAAQ,CAAC;IACzD,IAAAS,eAAI,cACET,QAAQ,4EAAiEK,KAAK,CAACK,IAAI,CACrF,IAAI,CACL,EACF;IAED,OAAOC,SAAS;EAClB;EAEA,IAAIC,eAAM,CAACC,GAAG,CAACb,QAAQ,CAAC,EAAE;IACxB,IAAMc,SAAS,GAAGF,eAAM,CAACG,GAAG,CAAWf,QAAQ,CAAC;IAGhDgB,MAAM,CAACC,IAAI,CAACH,SAAS,CAAC,CAACI,OAAO,CAAEC,GAAG,IAAK;MACtC,IAAIA,GAAG,IAAIhB,GAAG,EAAE;QACdA,GAAG,CAACgB,GAAG,CAAC,GAAGL,SAAS,CAACK,GAAG,CAAC;MAC3B;IACF,CAAC,CAAC;EACJ;EACA,OAAOhB,GAAG;AACZ,CAAC;AAAA"}
|
package/lib/legacy.js
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _legacyGenerator = require("./legacyGenerator");
|
|
4
|
-
|
|
5
4
|
var _sdkConfig = require("./sdkConfig");
|
|
6
|
-
|
|
7
5
|
var _nodeUtils = require("./nodeUtils");
|
|
8
|
-
|
|
9
6
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
10
|
-
|
|
11
7
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
12
|
-
|
|
13
8
|
_asyncToGenerator(function* () {
|
|
14
9
|
try {
|
|
15
10
|
var config = (0, _sdkConfig.SDKConfig)();
|
package/lib/legacy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"legacy.js","names":["config","SDKConfig","name","props","args","process","argv","slice","runConfig","e","quit"],"sources":["../src/legacy.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport { runConfig } from './legacyGenerator'\nimport { SDKConfig } from './sdkConfig'\nimport { quit } from './nodeUtils'\n;(async () => {\n try {\n const config = SDKConfig()\n // Look for the Looker config section and only run that one\n const name = 'Looker'\n const props = config[name]\n const args = process.argv.slice(2)\n\n await runConfig(name, props, args)\n } catch (e: any) {\n quit(e)\n }\n})()\n"],"mappings":";;AA0BA;AACA;AACA;AACC;AAAA;AAAA,kBAAC,aAAY;EACZ,IAAI;IACF,IAAMA,MAAM,GAAG,IAAAC,oBAAS,GAAE;IAE1B,IAAMC,IAAI,GAAG,QAAQ;IACrB,IAAMC,KAAK,GAAGH,MAAM,CAACE,IAAI,CAAC;IAC1B,IAAME,IAAI,GAAGC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC;IAElC,MAAM,IAAAC,0BAAS,EAACN,IAAI,EAAEC,KAAK,EAAEC,IAAI,CAAC;EACpC,CAAC,CAAC,OAAOK,CAAM,EAAE;IACf,IAAAC,eAAI,EAACD,CAAC,CAAC;EACT;AACF,CAAC,GAAG"}
|
package/lib/legacyGenerator.js
CHANGED
|
@@ -4,24 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.runConfig = void 0;
|
|
7
|
-
|
|
8
7
|
var _sdkCodegenUtils = require("@looker/sdk-codegen-utils");
|
|
9
|
-
|
|
10
8
|
var _sdkCodegen = require("@looker/sdk-codegen");
|
|
11
|
-
|
|
12
9
|
var _nodeUtils = require("./nodeUtils");
|
|
13
|
-
|
|
14
10
|
var _fetchSpec = require("./fetchSpec");
|
|
15
|
-
|
|
16
11
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
17
|
-
|
|
18
12
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
19
|
-
|
|
20
13
|
var defaultApiVersion = props => {
|
|
21
14
|
var versions = (props.api_versions || '4.0').split(',');
|
|
22
15
|
return versions[versions.length - 1];
|
|
23
16
|
};
|
|
24
|
-
|
|
25
17
|
var generate = function () {
|
|
26
18
|
var _ref = _asyncToGenerator(function* (fileName, spec, props) {
|
|
27
19
|
var path = spec.path ? spec.path : spec.language;
|
|
@@ -31,12 +23,10 @@ var generate = function () {
|
|
|
31
23
|
var options = spec.options || '';
|
|
32
24
|
return (0, _nodeUtils.run)('openapi-generator-cli', ['generate', '-i', fileName, '-g', language, '-o', apiPath, '--enable-post-process-file', options]);
|
|
33
25
|
});
|
|
34
|
-
|
|
35
26
|
return function generate(_x, _x2, _x3) {
|
|
36
27
|
return _ref.apply(this, arguments);
|
|
37
28
|
};
|
|
38
29
|
}();
|
|
39
|
-
|
|
40
30
|
var runConfig = function () {
|
|
41
31
|
var _ref2 = _asyncToGenerator(function* (name, props) {
|
|
42
32
|
var targets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
@@ -48,7 +38,6 @@ var runConfig = function () {
|
|
|
48
38
|
var openApiFile = yield (0, _fetchSpec.logConvertSpec)(name, specs[apiVersion], props);
|
|
49
39
|
var languages = (0, _sdkCodegen.legacyLanguages)();
|
|
50
40
|
var results = [];
|
|
51
|
-
|
|
52
41
|
var _loop = function* _loop(language) {
|
|
53
42
|
if (targets.length === 0 || targets.find(t => t.localeCompare(language.language) === 0)) {
|
|
54
43
|
var tag = "".concat(name, " API ").concat(language.language, " version ").concat(apiVersion);
|
|
@@ -56,18 +45,14 @@ var runConfig = function () {
|
|
|
56
45
|
results.push(yield generate(openApiFile, language, props));
|
|
57
46
|
}
|
|
58
47
|
};
|
|
59
|
-
|
|
60
48
|
for (var language of languages) {
|
|
61
49
|
yield* _loop(language);
|
|
62
50
|
}
|
|
63
|
-
|
|
64
51
|
return results;
|
|
65
52
|
});
|
|
66
|
-
|
|
67
53
|
return function runConfig(_x4, _x5) {
|
|
68
54
|
return _ref2.apply(this, arguments);
|
|
69
55
|
};
|
|
70
56
|
}();
|
|
71
|
-
|
|
72
57
|
exports.runConfig = runConfig;
|
|
73
58
|
//# sourceMappingURL=legacyGenerator.js.map
|